- Można to napisać w Bashu, ale nie wiem czy Makefile + skrypty nie byłoby prostsze.
- Tablice w Bashu to naprawdę fajne narzędzie.
- Zamiast zamieniać line-ending w skrypcie, czemu nie składować tych plików od razu z poprawnymi (tylko Unix EOL jest poprawne).
- Zamiast używać nazw katalogów w skryptach nazwij je odpowiednio np.
install.sh
oraz configure.sh
, wtedy dodawanie i usuwanie nowych wpisów będzie super łatwe.
Wtedy masz skrypt instalacyjny:
#!/usr/bin/env bash
SCRIPT_PATH="$(dirname $0)/.."
# Fail as soon as there is problem
set -eo pipefail
if [ -e "$TOOLS" ]; do
# Set defaults
TOOLS=(git rstudio etc)
fi
try_run() {
file="$SCRIPT_PATH/$2/$1.sh"
if [ -f "$file" ]; do
echo "$1 $2"
echo "-----------------"
bash "$file"
fi
}
for tool in ${TOOLS[*]}
do
try_run install "$tool"
try_run configure "$tool"
done
W ten sposób masz możliwość łatwej konfiguracji co ma być zainstalowane (poprzez tablicę TOOLS
) oraz zdecydowanie bardziej przejrzysty sposób definiowania nowych narzędzi.
Jak chcesz jednak pójść jeszcze dalej to polecam zobaczyć narzędzia jak GNU Stow, lub jeszcze bardziej Nix oraz home-manager. To ostatnie to już zupełnie inna liga.