#!/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 -L $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