Files
dotfiles/webapp

103 lines
2.1 KiB
Bash
Executable File

#!/usr/bin/env bash
# Installs or uninstalls webapps based on the spec in the './webapps' directory.
#
# This is used when setting up a new machine.
if [ -z "$DEV_ENV" ]; then
echo "env var DEV_ENV needs to be present"
exit 1
fi
if [ -z "$XDG_DATA_HOME" ]; then
echo "no xdg data home"
echo "using ~/.local/share"
XDG_DATA_HOME=~/.local/share
fi
grep=""
dry_run="0"
uninstall="0"
while [[ $# -gt 0 ]]; do
echo "ARG: \"$1\""
# Handle a --dry or --dry-run argument
if [[ "$1" =~ ^--dry ]]; then
dry_run="1"
# Handle an --uninstall argument
elif [[ "$1" =~ ^--u ]]; then
uninstall="1"
# Handle an --install argument (default)
elif [[ ! "$1" =~ ^--i ]]; then
grep="$1"
fi
shift
done
log() {
if [[ $dry_run == "1" ]]; then
echo "[DRY_RUN]: $1"
else
echo "$1"
fi
}
install() {
local file=$DEV_ENV/env/webapps/$(basename $1)
local script="$DEV_ENV/env/.local/scripts/install-webapp"
if [[ ! -x $script ]]; then
log "Failed to find install web app script."
exit 1
fi
# Install local icons if needed
mkdir -p $XDG_DATA_HOME/applications/icons
for i in $(find $DEV_ENV/env/.local/share/applications/icons -mindepth 1 -maxdepth 1 -type f); do
if [[ ! -f $XDG_DATA_HOME/applications/icons/$i ]] && [[ $dry_run == "0" ]]; then
cp $i $XDG_DATA_HOME/applications/icons
fi
done
log "Installing webapp from spec: $file"
if [[ $dry_run == "0" ]]; then
$script --file $file
fi
}
uninstall() {
local file=$DEV_ENV/env/webapps/$(basename $1)
local script="$DEV_ENV/env/.local/scripts/uninstall-desktop-app"
if [[ ! -x $script ]]; then
log "Failed to find uninstall web app script."
exit 1
fi
log "Uninstalling webapp from spec: $file"
if [[ $dry_run == "0" ]]; then
$script --file $file
fi
}
############################## MAIN ##############################
log "WEBAPP: -- grep: $grep"
apps_dir=$(find $DEV_ENV/env/webapps -mindepth 1 -maxdepth 1 -type f)
for s in $apps_dir; do
if basename $s | grep -vq "$grep"; then
log "grep \"$grep\" filtered out $s"
continue
fi
if [[ $uninstall == "1" ]]; then
uninstall $s
else
install $s
fi
done