Updated bootstrap to allow for easy git installs

This commit is contained in:
Michel Fedde 2025-04-25 13:21:53 +02:00
parent 19a5dfbc41
commit 1c6fec2a1f
3 changed files with 66 additions and 33 deletions

View file

@ -24,6 +24,7 @@ echo "# Gathering applications"
declare -x -a applications
declare -x -a actions
actions=()
declare -x -a gitInstalls
addApplications ()
{
@ -43,15 +44,73 @@ addActions()
done
}
addGitInstall() {
local name=$1
local path=$2
local setupCommand=$3
gitInstalls+=("$name;$path;$setupCommand")
}
while IFS= read -r file; do
if [[ -x "$file" && ! "$file" =~ "##" && ! "$file" =~ ~$ && ! "$file" =~ ".bak" ]]; then
source $file
fi
done < <(find -L "$APPLICATIONS_PATH" -type f | sort)
echo -n "# Installing/Updating applications (${#applications[@]})"
installPackages ${applications[*]}
checkGitInstallExistance() {
local path=$1
if [ ! -d $path ]; then
return 0
fi
PREV_DIRECTORY=$PWD
cd $path
if ! git remote update && git status | grep behind >>/dev/null; then
cd $PREV_DIRECTORY
return 0
fi
return 1
}
runGitInstall() {
local targetPath=$1
local repository=$2
local setupCommand=$3
PREV_DIRECTORY=$PWD
if [ ! -d "$targetPath" ]; then
git clone "$repository" "$targetPath"
fi
cd $targetPath
$setupCommand
cd $PREV_DIRECTORY
}
for gitInstall in "${gitInstalls[@]}"
do
arrIN=(${gitInstall//;/ })
targetPath="$HOME/.cache/${arrIN[0]}"
if checkGitInstallExistance "$targetPath"; then
echo "Installing... ${arrIN[0]}"
runGitInstall "$targetPath" "${arrIN[1]}" "${arrIN[2]}"
fi
done
echo "# Executing actions... (${#actions[@]})"
for action in "${actions[@]}";
do