diff options
| author | Craig Jennings <c@cjennings.net> | 2026-05-17 14:36:57 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-05-17 14:36:57 -0500 |
| commit | 79f027d4fa8a0e5abb32c6cf8c21586b73c77a39 (patch) | |
| tree | 7441b19219e23ba77b131da0cecf1fd43d52232e | |
| parent | 19cd3ffad4874a812fb5ecbff636e15b0d0a7fc7 (diff) | |
| download | archsetup-79f027d4fa8a0e5abb32c6cf8c21586b73c77a39.tar.gz archsetup-79f027d4fa8a0e5abb32c6cf8c21586b73c77a39.zip | |
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.
| -rwxr-xr-x | scripts/games.sh | 79 |
1 files changed, 50 insertions, 29 deletions
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 |
