#!/bin/bash dot_dir=$HOME/.dofiles repo="https://git.capella.pro/capella/dotfiles.git" set -ex trap popd EXIT mkdir -pv $dot_dir pushd $dot_dir sub_help(){ echo "Usage: $ProgName [options]\n" echo "Subcommands:" echo " sync add a dotfyle to sync" echo "" echo "For help with each subcommand run:" echo "$ProgName -h|--help" echo "" } sub_sync(){ if [[ ! -d $dot_dir/dotfiles/.git ]]; then git clone $repo fi mkdir -p dotfiles/dots cd dotfiles/dots git pull if [ ! -z "$1" ]; then real_path=$(realpath $1) if [[ ! -d $real_path ]]; then echo "$real_path is not a dir!" exit 0 fi to_copy=${real_path#*$HOME} mkdir -p $(pwd)$to_copy cp -R $real_path $(pwd)$to_copy rm -rf $real_path echo "${to_copy/\//}" >> ../to_sync fi cd .. git add . if git commit -am "$(date)"; then git push fi while read p; do destination="$HOME/$p" rm -rf $destination ln -s "$dot_dir/dotfiles/dots/$p" $(dirname $destination) done &2 echo " Run '$ProgName --help' for a list of known subcommands." >&2 exit 1 fi ;; esac