From 79f027d4fa8a0e5abb32c6cf8c21586b73c77a39 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Sun, 17 May 2026 14:36:57 -0500 Subject: refactor(scripts/games): array + loop, flathub remote check, failure summary Three things were wrong with the old script: - One line had a duplicate `flathub` argument (`flatpak install ... flathub flathub org.gnome.Crosswords`). Flatpak tolerated it; still a typo. - Nothing added the flathub remote, so a fresh machine without it would fail on every line. - 24 nearly identical `flatpak install` lines with no central handling if one app failed. I moved the app IDs into a single `APPS=()` array (sorted) and looped. The script now runs `flatpak remote-add --if-not-exists --user flathub https://flathub.org/repo/flathub.flatpakrepo` up front, collects any failed apps into a `failed` array, and prints a summary plus a non-zero exit at the end if anything didn't install. I used `set -uo pipefail` rather than `-euo` on purpose so a single failed install doesn't abort the rest of the run. --- scripts/games.sh | 79 +++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 50 insertions(+), 29 deletions(-) (limited to 'scripts/games.sh') diff --git a/scripts/games.sh b/scripts/games.sh index 518a2cb..de6a476 100755 --- a/scripts/games.sh +++ b/scripts/games.sh @@ -1,33 +1,54 @@ -#!/bin/sh +#!/bin/bash # games installations via flatpak -# Make sure we have flatpak already installed -if ! [ -x "$(command -v flatpak)" ]; then - echo 'Error: flatpak is not installed.' >&2 - echo 'Please install it with "sudo pacman -S flatpak" and reboot your system.' >&2 - exit 1 +set -uo pipefail + +if ! command -v flatpak >/dev/null 2>&1; then + echo 'Error: flatpak is not installed.' >&2 + echo 'Please install it with "sudo pacman -S flatpak" and reboot your system.' >&2 + exit 1 fi -flatpak install --noninteractive --assumeyes --user flathub app.drey.Blurble -flatpak install --noninteractive --assumeyes --user flathub com.github.avojak.paint-spill -flatpak install --noninteractive --assumeyes --user flathub flathub org.gnome.Crosswords -flatpak install --noninteractive --assumeyes --user flathub io.github.garglk.Gargoyle -flatpak install --noninteractive --assumeyes --user flathub io.github.nokse22.ultimate-tic-tac-toe -flatpak install --noninteractive --assumeyes --user flathub io.github.swordpuffin.hunt -flatpak install --noninteractive --assumeyes --user flathub io.github.swordpuffin.splices -flatpak install --noninteractive --assumeyes --user flathub org.gnome.Aisleriot -flatpak install --noninteractive --assumeyes --user flathub org.gnome.Chess -flatpak install --noninteractive --assumeyes --user flathub org.gnome.Four-in-a-row -flatpak install --noninteractive --assumeyes --user flathub org.gnome.LightsOff -flatpak install --noninteractive --assumeyes --user flathub org.gnome.Mahjongg -flatpak install --noninteractive --assumeyes --user flathub org.gnome.Mines -flatpak install --noninteractive --assumeyes --user flathub org.gnome.Quadrapassel -flatpak install --noninteractive --assumeyes --user flathub org.gnome.Sudoku -flatpak install --noninteractive --assumeyes --user flathub org.gnome.SwellFoop -flatpak install --noninteractive --assumeyes --user flathub org.gnome.Taquin -flatpak install --noninteractive --assumeyes --user flathub org.gnome.Tetravex -flatpak install --noninteractive --assumeyes --user flathub org.gnome.TwentyFortyEight -flatpak install --noninteractive --assumeyes --user flathub org.gnome.five-or-more -flatpak install --noninteractive --assumeyes --user flathub org.gnome.gbrainy -flatpak install --noninteractive --assumeyes --user flathub org.gottcode.Peg-E -flatpak install --noninteractive --assumeyes --user flathub org.gottcode.Tanglet +flatpak remote-add --if-not-exists --user flathub https://flathub.org/repo/flathub.flatpakrepo + +APPS=( + app.drey.Blurble + com.github.avojak.paint-spill + io.github.garglk.Gargoyle + io.github.nokse22.ultimate-tic-tac-toe + io.github.swordpuffin.hunt + io.github.swordpuffin.splices + org.gnome.Aisleriot + org.gnome.Chess + org.gnome.Crosswords + org.gnome.five-or-more + org.gnome.Four-in-a-row + org.gnome.gbrainy + org.gnome.LightsOff + org.gnome.Mahjongg + org.gnome.Mines + org.gnome.Quadrapassel + org.gnome.Sudoku + org.gnome.SwellFoop + org.gnome.Taquin + org.gnome.Tetravex + org.gnome.TwentyFortyEight + org.gottcode.Peg-E + org.gottcode.Tanglet +) + +failed=() +for app in "${APPS[@]}"; do + if flatpak install --noninteractive --assumeyes --user flathub "$app"; then + : + else + failed+=("$app") + fi +done + +if [ "${#failed[@]}" -gt 0 ]; then + echo + echo "Failed to install ${#failed[@]} app(s):" >&2 + printf ' - %s\n' "${failed[@]}" >&2 + exit 1 +fi -- cgit v1.2.3