docs: add lyrics dependency setup helper
This commit is contained in:
Executable
+149
@@ -0,0 +1,149 @@
|
||||
#!/usr/bin/env sh
|
||||
set -eu
|
||||
|
||||
usage() {
|
||||
cat <<'EOF'
|
||||
Usage: scripts/setup-deps.sh [--check] [--yes]
|
||||
|
||||
Install or check runtime dependencies for the Noctalia Lyrics plugin.
|
||||
|
||||
Options:
|
||||
--check Only report missing commands; do not install anything.
|
||||
--yes Skip the confirmation prompt before installing packages.
|
||||
--help Show this help text.
|
||||
EOF
|
||||
}
|
||||
|
||||
CHECK_ONLY=0
|
||||
ASSUME_YES=0
|
||||
|
||||
while [ "$#" -gt 0 ]; do
|
||||
case "$1" in
|
||||
--check)
|
||||
CHECK_ONLY=1
|
||||
;;
|
||||
-y|--yes)
|
||||
ASSUME_YES=1
|
||||
;;
|
||||
-h|--help)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "Unknown option: $1" >&2
|
||||
usage >&2
|
||||
exit 2
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
need_command() {
|
||||
command -v "$1" >/dev/null 2>&1 || MISSING_COMMANDS="$MISSING_COMMANDS $1"
|
||||
}
|
||||
|
||||
MISSING_COMMANDS=""
|
||||
need_command playerctl
|
||||
need_command python3
|
||||
need_command curl
|
||||
need_command cp
|
||||
|
||||
if [ -z "$MISSING_COMMANDS" ]; then
|
||||
echo "All runtime commands are installed: playerctl python3 curl cp"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "Missing runtime command(s):$MISSING_COMMANDS"
|
||||
|
||||
if [ "$CHECK_ONLY" -eq 1 ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$(id -u)" -eq 0 ]; then
|
||||
SUDO=""
|
||||
elif command -v sudo >/dev/null 2>&1; then
|
||||
SUDO="sudo"
|
||||
else
|
||||
echo "sudo is required to install packages as a non-root user." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
detect_pm() {
|
||||
if command -v apt-get >/dev/null 2>&1; then
|
||||
echo apt
|
||||
elif command -v dnf >/dev/null 2>&1; then
|
||||
echo dnf
|
||||
elif command -v pacman >/dev/null 2>&1; then
|
||||
echo pacman
|
||||
elif command -v zypper >/dev/null 2>&1; then
|
||||
echo zypper
|
||||
elif command -v apk >/dev/null 2>&1; then
|
||||
echo apk
|
||||
elif command -v xbps-install >/dev/null 2>&1; then
|
||||
echo xbps
|
||||
else
|
||||
echo unknown
|
||||
fi
|
||||
}
|
||||
|
||||
PM="$(detect_pm)"
|
||||
|
||||
case "$PM" in
|
||||
apt)
|
||||
INSTALL_CMD="$SUDO apt-get update && $SUDO apt-get install -y playerctl python3 curl coreutils"
|
||||
;;
|
||||
dnf)
|
||||
INSTALL_CMD="$SUDO dnf install -y playerctl python3 curl coreutils"
|
||||
;;
|
||||
pacman)
|
||||
INSTALL_CMD="$SUDO pacman -S --needed playerctl python curl coreutils"
|
||||
;;
|
||||
zypper)
|
||||
INSTALL_CMD="$SUDO zypper install -y playerctl python3 curl coreutils"
|
||||
;;
|
||||
apk)
|
||||
INSTALL_CMD="$SUDO apk add playerctl python3 curl coreutils"
|
||||
;;
|
||||
xbps)
|
||||
INSTALL_CMD="$SUDO xbps-install -Sy playerctl python3 curl coreutils"
|
||||
;;
|
||||
*)
|
||||
cat >&2 <<'EOF'
|
||||
Could not detect a supported package manager.
|
||||
Install these packages manually with your distribution package manager:
|
||||
playerctl python3 curl coreutils
|
||||
EOF
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
echo "Detected package manager: $PM"
|
||||
echo "Install command: $INSTALL_CMD"
|
||||
|
||||
if [ "$ASSUME_YES" -ne 1 ]; then
|
||||
printf "Proceed with installation? [y/N] "
|
||||
read -r answer
|
||||
case "$answer" in
|
||||
y|Y|yes|YES)
|
||||
;;
|
||||
*)
|
||||
echo "Cancelled."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
sh -c "$INSTALL_CMD"
|
||||
|
||||
MISSING_COMMANDS=""
|
||||
need_command playerctl
|
||||
need_command python3
|
||||
need_command curl
|
||||
need_command cp
|
||||
|
||||
if [ -n "$MISSING_COMMANDS" ]; then
|
||||
echo "Still missing after installation:$MISSING_COMMANDS" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Dependencies installed successfully."
|
||||
Reference in New Issue
Block a user