Various scripts that I maintain

Add relink script

Signed-off-by: Shiloh Fen <shiloh@shilohfen.com>

Changed files
+39
scripts
+8
README.md
··· 57 57 # lh-pairall 58 58 59 59 Uses lighthouse_console to reset all SteamVR dongles, then put them all into pairing mode. 60 + 61 + # relink 62 + 63 + Update symlink targets from an old target directory to a new one 64 + 65 + Example: If you moved all files in `~/Development/tools` to `~/Applications`, you can update all 66 + symlinks in `~/.local/bin` that point to the old location with 67 + `relink ~/.local/bin ~/Development/tools ~/Applications`
+31
scripts/relink.nu
··· 1 + #!/usr/bin/nu 2 + 3 + use std log 4 + 5 + # Update symlink targets from an old target directory to a new one 6 + # 7 + # Example: If you moved `~/Development/tools` to `~/Applications`, update all 8 + # symlinks in `~/.local/bin` that point to the old location: 9 + # `relink ~/.local/bin ~/Development/tools ~/Applications` 10 + def main [ 11 + directory: path 12 + old_target_dir: path 13 + new_target_dir: path 14 + ] { 15 + let directory = $directory | path expand 16 + let old_target_dir = $old_target_dir | path expand 17 + let new_target_dir = $new_target_dir | path expand 18 + 19 + log info $"Updating symlinks in ($directory): ($old_target_dir)/.* -> ($new_target_dir)/.*" 20 + 21 + ls -l $directory 22 + | where type == symlink and target starts-with $old_target_dir 23 + | par-each {|link| 24 + let new_target = $link.target | str replace ($old_target_dir + "/") ($new_target_dir + "/") 25 + ln -sf $new_target $link.name 26 + log info $"Updated ($link.name) target: ($link.target) -> ($new_target)" 27 + } 28 + 29 + log info "Done!" 30 + } 31 +