diff --git a/bin/create-symlink b/bin/create-symlink new file mode 100755 index 0000000..d171aeb --- /dev/null +++ b/bin/create-symlink @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +create-symlink() { + local source="$1" + local target="$2" + + # Remove existing file/directory if it exists + if [[ -e "$target" || -L "$target" ]]; then + rm -rf "$target" + fi + + # Create parent directory if needed + local parent_dir=$(dirname "$target") + ensure-directory "$parent_dir" + + # Create the symlink + ln -sf "$source" "$target" +} \ No newline at end of file diff --git a/bin/create-symlink-dir b/bin/create-symlink-dir new file mode 100755 index 0000000..43d8045 --- /dev/null +++ b/bin/create-symlink-dir @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +create-symlink-dir() { + local source_dir="$1" + local target_dir="$2" + + # Remove existing directory if it exists + if [[ -e "$target_dir" || -L "$target_dir" ]]; then + rm -rf "$target_dir" + fi + + # Create parent directory if needed + local parent_dir=$(dirname "$target_dir") + ensure-directory "$parent_dir" + + # Create symlink to directory + ln -sf "$source_dir" "$target_dir" +} \ No newline at end of file diff --git a/bin/create-symlink-files b/bin/create-symlink-files new file mode 100755 index 0000000..8f1d32a --- /dev/null +++ b/bin/create-symlink-files @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +create-symlink-files() { + local source_pattern="$1" + local target_dir="$2" + + # Create target directory + ensure-directory "$target_dir" + + # Link each file in the source pattern + for source_file in $source_pattern; do + if [[ -f "$source_file" ]]; then + local filename=$(basename "$source_file") + local target_file="$target_dir/$filename" + + # Remove existing file if it exists + if [[ -e "$target_file" || -L "$target_file" ]]; then + rm -f "$target_file" + fi + + # Create the symlink + ln -sf "$source_file" "$target_file" + fi + done +} \ No newline at end of file diff --git a/bin/ensure-directory b/bin/ensure-directory new file mode 100755 index 0000000..8bd54dd --- /dev/null +++ b/bin/ensure-directory @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +ensure-directory() { + local dir="$1" + [[ ! -d "$dir" ]] && mkdir -p "$dir" +} \ No newline at end of file diff --git a/library.md b/library.md index 0325cf3..a7bc118 100644 --- a/library.md +++ b/library.md @@ -64,6 +64,32 @@ printf "$column" 'open-with-os' '' 'Open file or url with default application.' printf "$column" 'open-url-with-delay' '[url][delay]' 'Open url after n seconds.' ``` +## Files + +### ensure-directory + +```bash +printf "$column" 'ensure-directory' '[path]' 'Ensure directory path exists.' +``` + +### create-symlink + +```bash +printf "$column" 'create-symlink' '[source][target]' 'Remove existing file/directory and create symlink.' +``` + +### create-symlink-dir + +```bash +printf "$column" 'create-symlink-dir' '[source][target]' 'Remove existing directory and create symlink.' +``` + +### create-symlink-files + +```bash +printf "$column" 'create-symlink-files' '[source][target]' 'Create symlink for files in source pattern.' +``` + ## Python ### activate-venv