mirror of https://github.com/Chizi123/Dotfiles.git

Joel Grunbaum
2021-12-23 ff1ecb611757d89ae56a4705616d325ab3365cba
commit | author | age
f86690 1 #!/bin/sh
JG 2
3 install_links() {
4     source ./DICT
5     if [ -n "$FILES" ]; then
6     for i in `seq 1 $(echo "$FILES" | wc -w)`; do
7         file=$(echo "$FILES" | cut -d' ' -f $i)
8         loc=$(echo "$LOCATIONS" | cut -d' ' -f $i)
9         dir=$(echo "$loc" | rev | cut -d'/' -f2- | rev)
10         mkdir -p "$dir"
11         ln -sf "$(pwd)/$file" "$loc"
12     done
13     fi
14     if [ -n "$SUDO_FILES" ]; then
15     for i in `seq 1 $(echo "$SUDO_FILES" | wc -w)`; do
16         file=$(echo "$SUDO_FILES" | cut -d' ' -f $i)
17         loc=$(echo "$SUDO_LOCATIONS" | cut -d' ' -f $i)
18         dir=$(echo "$loc" | rev | cut -d'/' -f2- | rev)
19         sudo mkdir -p "$dir"
20         sudo ln -sf "$(pwd)/$file" "$loc"
21     done
22     fi
23     if [ "$(type -t custom)" = "function" ]; then
24     custom install
25     fi
26 }
27
28 remove_links() {
29     source ./DICT
30     if [ -n "$FILES" ]; then
31     for i in `seq 1 $(echo $FILES | wc -w)`; do
32         loc=$(echo "$LOCATIONS" | cut -d' ' -f $i)
33         rm "$loc" 2>/dev/null
34         loc=$(echo "$loc" | rev | cut -d'/' -f2- | rev)
35         while [ -z "$(ls -A $loc)" ]; do
36         rm -r "$loc"
37         loc=$(echo "$loc" | rev | cut -d'/' -f2- | rev)
38         done 2>/dev/null
39     done
40     fi
41     if [ -n "$SUDO_FILES" ]; then
42     for i in `seq 1 $(echo $SUDO_FILES | wc -w)`; do
43         loc=$(echo "$SUDO_LOCATIONS" | cut -d' ' -f $i)
44         sudo rm "$loc" 2>/dev/null
45         loc=$(echo "$loc" | rev | cut -d'/' -f2- | rev)
46         while [ -z "ls -A $loc" ]; do
47         sudo rm -r "$loc"
48         loc=$(echo "$loc" | rev | cut -d'/' -f2- | rev)
49         done 2>/dev/null
50     done
51     fi
52     if [ "$(type -t custom)" = "function" ]; then
53     custom remove
54     fi
55 }
56
57 handle_package() {
da991b 58     echo $1
JG 59     if [ -d "$1" ]; then
60     unset DEPS
61     eval $(grep "DEPS=" $1/DICT)
62     for i in $DEPS; do
63         (handle_package $i $2)
64     done
f86690 65     (cd "$1"; $2)
JG 66     else
67     echo "No configuration found for $i"
68     fi
69 }
da991b 70
f86690 71 usage() {
JG 72     echo "Install dotfiles with symlinks"
73     echo "Usage with -h|--help"
74     echo "Install with -i|--install (default)"
75     echo "Remove with -r|--remove"
76     echo "Directories have the configurations for their programs/use cases"
77     echo "List all configurations to be installed in the command line"
78     echo "Example usage: $0 -i bash zsh"
79 }
80
81 INSTALL=1
82 PACKAGES=""
83 FUNCTION=""
84
85 while [ -n "$1" ]; do
86       case "$1" in
87       -h|--help|"") usage; exit;;
88       -i|--install) INSTALL=1;;
89       -r|--remove) INSTALL=0;;
90       --) shift; break;;
91       -*) echo "Invalid argument"; usage; exit;;
92       *) handle_package "$1" "$([ \"$INSTALL\" = \"1\" ] && echo install || echo remove)_links";;
93       esac
94       shift
95 done
96
da991b 97 while [ -n "$1" ]; do
JG 98     handle_package "$1" "$([ \"$INSTALL\" = \"1\" ] && echo install || echo remove)_links"
99 done