mirror of
https://github.com/pepaskopec-blip/Graduately.git
synced 2026-10-27 15:14:35 +00:00
80 lines
2.4 KiB
Bash
Executable file
80 lines
2.4 KiB
Bash
Executable file
#!/bin/sh
|
|
# maturita.c installer for Linux.
|
|
#
|
|
# Carries no application of its own: it downloads the current build straight
|
|
# from the repository's `builds` branch, which CI rewrites whenever main
|
|
# changes. This file therefore never goes stale.
|
|
#
|
|
# Run it with: sh maturita-installer-linux.sh
|
|
# The app updates itself from then on.
|
|
|
|
set -eu
|
|
|
|
REPO="pepaskopec-blip/maturita.c"
|
|
BRANCH="builds"
|
|
ASSET="maturita-linux-x86_64.AppImage"
|
|
URL="https://raw.githubusercontent.com/$REPO/$BRANCH/$ASSET"
|
|
|
|
# ~/Applications is where desktop environments look for AppImages, and the app
|
|
# keeps its progress/ directory next to its own file.
|
|
DEST_DIR="$HOME/Applications"
|
|
DEST="$DEST_DIR/maturita.AppImage"
|
|
DESKTOP_DIR="$HOME/.local/share/applications"
|
|
ICON_DIR="$HOME/.local/share/icons/hicolor/512x512/apps"
|
|
|
|
say() { printf '%s\n' "$*"; }
|
|
die() { printf '\nError: %s\n' "$*" >&2; exit 1; }
|
|
|
|
say "Installing maturita.C"
|
|
say "---------------------"
|
|
|
|
arch=$(uname -m)
|
|
if [ "$arch" != "x86_64" ]; then
|
|
die "only x86_64 builds are published, but this machine reports '$arch'.
|
|
Build from source instead: https://github.com/$REPO"
|
|
fi
|
|
|
|
command -v curl >/dev/null 2>&1 || die "curl was not found. Install it first."
|
|
|
|
mkdir -p "$DEST_DIR"
|
|
|
|
tmp=$(mktemp -d)
|
|
trap 'rm -rf "$tmp"' EXIT INT TERM
|
|
|
|
say "Downloading the latest build..."
|
|
curl -fL --progress-bar -o "$tmp/$ASSET" "$URL" ||
|
|
die "the download failed. Check your internet connection."
|
|
|
|
say "Installing to $DEST"
|
|
chmod +x "$tmp/$ASSET"
|
|
mv -f "$tmp/$ASSET" "$DEST" || die "could not write to $DEST_DIR."
|
|
|
|
# A menu entry needs the icon as a separate file, which the AppImage can
|
|
# unpack without FUSE. Losing the icon is not worth failing the install over.
|
|
if (cd "$tmp" && "$DEST" --appimage-extract \
|
|
'usr/share/icons/hicolor/512x512/apps/maturita.png' >/dev/null 2>&1); then
|
|
icon="$tmp/squashfs-root/usr/share/icons/hicolor/512x512/apps/maturita.png"
|
|
if [ -f "$icon" ]; then
|
|
mkdir -p "$ICON_DIR"
|
|
cp -f "$icon" "$ICON_DIR/maturita.png"
|
|
fi
|
|
fi
|
|
|
|
mkdir -p "$DESKTOP_DIR"
|
|
cat > "$DESKTOP_DIR/maturita.desktop" <<EOF
|
|
[Desktop Entry]
|
|
Type=Application
|
|
Name=maturita.C
|
|
Comment=Practice app for the Czech maturita exam
|
|
Exec=$DEST
|
|
Icon=maturita
|
|
Terminal=false
|
|
Categories=Education;
|
|
EOF
|
|
|
|
command -v update-desktop-database >/dev/null 2>&1 &&
|
|
update-desktop-database "$DESKTOP_DIR" >/dev/null 2>&1 || true
|
|
|
|
say ""
|
|
say "Done. Starting the app..."
|
|
"$DEST" >/dev/null 2>&1 &
|