#!/bin/sh set -e command -v yadm git git rev-parse --is-inside-work-tree allowed_patterns="-e ^.bin -e ^.config/alacritty/ -e ^.config/calcurse/ -e ^.config/cmus/classic.theme -e ^.config/cmus/rc -e ^.config/dot/term-color-* -e ^.config/gopass/config.yml -e ^.config/i3*/config -e ^.config/mimeapps.list -e ^.config/neomutt/neomuttrc -e ^.config/newsboat/config -e ^.config/nvim/ -e ^.config/pipewire/ -e ^.config/qutebrowser/config.py -e ^.config/qutebrowser/greasemonkey/ -e ^.config/sway/config -e ^.config/systemd/*.service -e ^.config/tmux/ -e ^.config/user-dirs.dir -e ^.config/user-dirs.locale -e ^.config/virt-lightning/ -e ^.config/xsuspender.conf -e ^.gnupg/gpg-agent.conf -e ^.kshrc -e ^.mbsyncrc -e ^.npmrc -e ^.public-keys/ -e ^.weechat/buflist.conf -e ^.weechat/fset.conf -e ^.weechat/logger.conf -e ^.weechat/weechat.conf -e ^.xinitrc -e ^.zshrc " [ "$(yadm rev-parse --show-toplevel)" != "$(git rev-parse --show-toplevel)" ] # retrieve existing files upstream_files=$(cd "${HOME}" && yadm ls-files) local_files=$(find . -not -path "./.git*" -not -path ".") echo "${local_files}" | xargs rm -rf allowed_files=$(echo "${upstream_files}" | grep ${allowed_patterns}) for allowed_file in ${allowed_files}; do echo "${allowed_file}" install -D "${HOME}/${allowed_file}" "${allowed_file}" done git add . git commit -m "$(date)"