Эх сурвалжийг харах

update ./dot to support removing and updating

Daniel Sheffield 4 өдөр өмнө
parent
commit
0a9d3810fc
2 өөрчлөгдсөн 55 нэмэгдсэн , 30 устгасан
  1. 1 0
      alacritty/.alacritty.toml
  2. 54 30
      dot

+ 1 - 0
alacritty/.alacritty.toml

@@ -27,3 +27,4 @@ draw_bold_text_with_bright_colors = true
 action = "CreateNewWindow"
 key = "X"
 mods = "Control|Shift"
+

+ 54 - 30
dot

@@ -6,46 +6,70 @@ action="$1"
 package="$2"
 target="${3:-}"
 
-#stow="echo stow" # for debugging
-stow="stow"
+stow="echo stow" # for debugging
+#stow="stow"
 
 DOTFILES_DIR="${DOTFILES_DIR:=}"
 [ "$DOTFILES_DIR" ] || DOTFILES_DIR=$(pwd)
 
+action_to_arg(){
+case "$1" in
+    "remove") echo --delete;;
+    "update") echo --restow;;
+    "apply" ) echo --stow;;
+    *       ) ;;
+esac
+}
+
 target_to_dest(){
 case "$1" in
-	"user") echo "$HOME";;
-	"system") echo /;;
-	*) ;;
+    "user"  ) echo "$HOME";;
+    "system") echo /;;
+    *       ) ;;
 esac
 }
 
+_stow(){
+    stow_dir="$1"
+    stow_target_dir="$2"
+    stow_action="$3"
+    stow_package="$4"
+    $stow -d "${stow_dir}" -t "${stow_target_dir}" "${stow_action}" "${stow_package}"
+}
+
+action=$(action_to_arg "$action")
+
+[ "$action" ] || {
+    echo "No such action: $1"
+    exit
+}
+
 if [ "$target" ]
 then
-	if  [ -d "${DOTFILES_DIR}/${package}/${target}" ]
-	then
-		dest=$(target_to_dest "$target")
-		$stow -d "${DOTFILES_DIR}/${package}" -t "${dest}" "${target}"
-	else
-		[ "$target" == "user" ] || {
-			echo "Target '$target' does not exist for package '$package'"
-			exit 1
-		}
-		dest=$(target_to_dest "user")
-		$stow -d "${DOTFILES_DIR}" -t "${dest}" "${package}"
-	fi
+    if  [ -d "${DOTFILES_DIR}/${package}/${target}" ]
+    then
+        dest=$(target_to_dest "$target")
+        _stow "${DOTFILES_DIR}/${package}" "${dest}" "${action}" "${target}"
+    else
+        [ "$target" == "user" ] || {
+            echo "Target '$target' does not exist for package '$package'"
+            exit 1
+        }
+        dest=$(target_to_dest "user")
+        _stow "${DOTFILES_DIR}" "${dest}" "${action}" "${package}"
+    fi
 else
-	any=false
-	for target in user system;
-	do
-		[ -d "${DOTFILES_DIR}/${package}/${target}" ] || continue
-		any=true
-		dest=$(target_to_dest "$target")
-		$stow -d "${DOTFILES_DIR}/${package}" -t "${dest}" "${target}"
-	done
-	if ! "$any"
-	then
-		dest=$(target_to_dest "user")
-		$stow -d "${DOTFILES_DIR}" -t "${dest}" "${package}"
-	fi
+    any=false
+    for target in user system;
+    do
+        [ -d "${DOTFILES_DIR}/${package}/${target}" ] || continue
+        any=true
+        dest=$(target_to_dest "$target")
+        _stow "${DOTFILES_DIR}/${package}" "${dest}" "${action}" "${target}"
+    done
+    if ! "$any"
+    then
+        dest=$(target_to_dest "user")
+        _stow "${DOTFILES_DIR}" "${dest}" "${action}" "${package}"
+    fi
 fi