Browse Source

Fri May 13 21:51:16 BST 2022

Gabriel Capella 2 years ago
parent
commit
7d798b7910
1 changed files with 69 additions and 0 deletions
  1. 69 0
      start

+ 69 - 0
start

@@ -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