diff options
Diffstat (limited to 'functions')
| -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 |
