#!/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. # set -e set -o nounset set -o pipefail THIS_FILE=${BASH_SOURCE[0]} LOG_LABEL=$(basename $THIS_FILE) SCRIPTS=${SCRIPTS:-$HOME/.local/scripts} LOG_FILE=${LOG_FILE:-"$LOG_LABEL.log"} 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() { logging log --source "$THIS_FILE" "$@" } install() { local file=$DEV_ENV/env/webapps/$(basename $1) local script="$DEV_ENV/env/.local/scripts/hypr/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 install --file $file --no-interactive fi } uninstall() { local file=$DEV_ENV/env/webapps/$(basename $1) local script="$DEV_ENV/env/.local/scripts/hypr/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 ############################## # Setup logging file and label. source "$SCRIPTS/hypr/logging" setup-logging "$LOG_FILE" "$LOG_LABEL" export LOG_ENABLE_DRY_RUN="$dry_run" 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