|
@@ -0,0 +1,69 @@
|
|
|
|
+#!/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 <subcommand> [options]\n"
|
|
|
|
+ echo "Subcommands:"
|
|
|
|
+ echo " sync <dot_file_to_add> add a dotfyle to sync"
|
|
|
|
+ echo ""
|
|
|
|
+ echo "For help with each subcommand run:"
|
|
|
|
+ echo "$ProgName <subcommand> -h|--help"
|
|
|
|
+ echo ""
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+sub_sync(){
|
|
|
|
+ if [[ ! -d $dot_dir/dotfiles/.git ]]; then
|
|
|
|
+ git clone $repo
|
|
|
|
+ fi
|
|
|
|
+ mkdir -p dotfiles/dots
|
|
|
|
+ cd dotfiles/dots
|
|
|
|
+ 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 <to_sync
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+subcommand=$1
|
|
|
|
+case $subcommand in
|
|
|
|
+ "" | "-h" | "--help")
|
|
|
|
+ sub_help
|
|
|
|
+ ;;
|
|
|
|
+ *)
|
|
|
|
+ shift
|
|
|
|
+ sub_${subcommand} $@
|
|
|
|
+ if [ $? = 127 ]; then
|
|
|
|
+ echo "Error: '$subcommand' is not a known subcommand." >&2
|
|
|
|
+ echo " Run '$ProgName --help' for a list of known subcommands." >&2
|
|
|
|
+ exit 1
|
|
|
|
+ fi
|
|
|
|
+ ;;
|
|
|
|
+esac
|