39 lines
944 B
Bash
Executable File
39 lines
944 B
Bash
Executable File
#!/usr/bin/env bash
|
|
# Install the addons the active profile asked for, in the order listed.
|
|
# One idempotent script per addon in ctrl/addons/.
|
|
# Usage: addons.sh install | list
|
|
# Notes: docs/notes/addons.md
|
|
set -euo pipefail
|
|
cd "$(dirname "$0")"
|
|
|
|
source ./lib/config.sh
|
|
load_config
|
|
|
|
install() {
|
|
if [ -z "${ADDONS// /}" ]; then
|
|
echo "no addons in profile '$PROFILE_NAME'"
|
|
return
|
|
fi
|
|
local a
|
|
for a in $ADDONS; do
|
|
if [ ! -f "addons/${a}.sh" ]; then
|
|
echo "no such addon: addons/${a}.sh" >&2
|
|
exit 1
|
|
fi
|
|
echo "addon: $a"
|
|
bash "addons/${a}.sh"
|
|
done
|
|
}
|
|
|
|
list() {
|
|
echo "profile '$PROFILE_NAME' wants: ${ADDONS:-none}"
|
|
echo "available:"
|
|
ls addons/*.sh 2>/dev/null | xargs -n1 basename | sed 's/\.sh$//' | sed 's/^/ /'
|
|
}
|
|
|
|
case "${1:-list}" in
|
|
install) install ;;
|
|
list) list ;;
|
|
*) echo "usage: $0 [install|list]" >&2; exit 1 ;;
|
|
esac
|