diff options
| author | Deposite Pirate | 2026-02-18 05:53:37 +0100 |
|---|---|---|
| committer | Deposite Pirate | 2026-02-18 05:53:37 +0100 |
| commit | e5fac87405c6a01acc3630b0f17e7e10df858274 (patch) | |
| tree | bd3e0336afe8f2c5306669aa981bf9cbd5b7441d | |
| parent | 164bb33a6464f3c7f21e82ccd9d70f8f52acd6af (diff) | |
New script to synchronise scripts
This new script synchronises the fish scripts in two trees skipping the
scripts not present in the target tree or those tracked by git in the
target tree.
new file: functions/syncscript.fish
| -rw-r--r-- | functions/syncscript.fish | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/functions/syncscript.fish b/functions/syncscript.fish new file mode 100644 index 0000000..e1511cf --- /dev/null +++ b/functions/syncscript.fish @@ -0,0 +1,29 @@ +function syncscript --description "Synchronise fish script between two \ + directories trees" -a basedir -a targetdir + +if test (count $argv) -lt 2 + echo "Missing arguments." + return 1 +end + +set -f fishscriptdirs '/.config/fish/' + +for script in (find $targetdir -type f -path "*$fishscriptdirs*/*" -name "*.fish") + + set -l basescript (string replace "$targetdir" "$basedir" "$script") + + if not test -e $basescript + continue + end + + if git -C (path dirname $script) ls-files --error-unmatch $script &>/dev/null + continue + end + + if ask "Copy $basescript to $targetdir?" + cp -f --preserve="timestamps,mode" $basescript $script + end + +end + +end |
