summaryrefslogtreecommitdiff
path: root/init
diff options
context:
space:
mode:
Diffstat (limited to 'init')
-rwxr-xr-xinit29
1 files changed, 29 insertions, 0 deletions
diff --git a/init b/init
new file mode 100755
index 0000000..a1bedac
--- /dev/null
+++ b/init
@@ -0,0 +1,29 @@
+#!/usr/bin/env fish
+
+set homedirs dot-config dot-local-bin
+
+for dir in $homedirs
+ set -l target_base $HOME/(string replace '-' '/' (string replace -r '^dot-' '.' $dir))
+
+ for file in (find $dir -type f)
+ set -l src "$(pwd)/$file"
+ set -l dst (string replace -r "^$dir/" "$target_base/" $file)
+ if [ -L $dst -a "$(readlink $dst)" = $src ]
+ continue
+ end
+ mkdir -p "$(dirname $dst)"
+ ln -vs $src $dst
+ end
+end
+
+for file in (find etc -type f)
+ set -l src "$(pwd)/$file"
+ set -l dst /$file
+ if [ -f $dst ]
+ if [ "$(sha1sum < $dst)" = "$(sha1sum < $src)" ]
+ continue
+ end
+ end
+ sudo -p "[sudo] password to copy $dst: " mkdir -p "$(dirname $dst)"
+ sudo cp -v $src $dst
+end