Files
2026-08-08 10:28:03 +02:00

122 lines
3.9 KiB
Bash
Executable File

#!/bin/bash
# DOXA-TODO Installation Script
# --- Nastavení ---
APP_NAME="doxa-todo"
INSTALL_DIR="$HOME/.local/bin"
CONFIG_DIR="$HOME/.doxa-todo"
CONFIG_FILE="doxa_todo.json"
REPO_URL="https://codeberg.org/Kankys/doxa-todo.git"
# --- Funkce ---
error_exit() {
echo -e "\033[1;31mERROR: $1\033[0m" >&2
exit 1
}
success_message() {
echo -e "\033[1;32mSUCCESS: $1\033[0m"
}
info_message() {
echo -e "\033[1;34mINFO: $1\033[0m"
}
# --- Hlavní část skriptu ---
info_message "Kontrola Go instalace..."
if ! command -v go &> /dev/null
then
error_exit "Go není nainstalováno. Prosím, nainstalujte Go před spuštěním tohoto skriptu."
fi
success_message "Go je nainstalováno."
info_message "Kontrola aktuálního adresáře..."
# Zjistíme, zda jsme již v adresáři doxa-todo
if [ -f "main.go" ] && [ -f "go.mod" ] && grep -q "module doxa-todo" go.mod; then
info_message "Jste již v adresáři $APP_NAME, používám místní verzi."
else
info_message "Klonování repositáře..."
if [ -d "$APP_NAME" ]; then
info_message "Adresář $APP_NAME již existuje, používám místní verzi."
else
if ! git clone "$REPO_URL" "$APP_NAME"
then
error_exit "Nepodařilo se naklonovat repositář. Zkontrolujte připojení k internetu."
fi
success_message "Repozitář úspěšně naklonován."
fi
cd "$APP_NAME" || error_exit "Nepodařilo se vstoupit do adresáře $APP_NAME."
fi
info_message "Stažení závislostí projektu..."
if ! go mod download
then
error_exit "Nepodařilo se stáhnout závislosti Go. Zkontrolujte GO moduly a připojení k internetu."
fi
success_message "Závislosti projektu úspěšně staženy."
info_message "Kompilace aplikace..."
APP_BINARY="$APP_NAME"
if ! go build -o "$APP_BINARY" .
then
error_exit "Nepodařilo se zkompilovat aplikaci. Zkontrolujte chyby v kódu."
fi
success_message "Aplikace úspěšně zkompilována do './$APP_BINARY'."
info_message "Instalace aplikace..."
if ! mkdir -p "$INSTALL_DIR"
then
error_exit "Nepodařilo se vytvořit cílový adresář '$INSTALL_DIR'. Zkontrolujte oprávnění."
fi
if ! cp "$APP_BINARY" "$INSTALL_DIR/"
then
error_exit "Nepodařilo se zkopírovat binárku do '$INSTALL_DIR'. Zkontrolujte oprávnění."
fi
chmod +x "$INSTALL_DIR/$APP_NAME"
success_message "Aplikace '$APP_NAME' úspěšně nainstalována do '$INSTALL_DIR'."
info_message "Nastavení konfiguračního adresáře..."
if ! mkdir -p "$CONFIG_DIR"
then
error_exit "Nepodařilo se vytvořit konfigurační adresář '$CONFIG_DIR'. Zkontrolujte oprávnění."
fi
if [ ! -f "$CONFIG_DIR/$CONFIG_FILE" ]
then
echo "[]" > "$CONFIG_DIR/$CONFIG_FILE"
if [ $? -ne 0 ]
then
error_exit "Nepodařilo se vytvořit konfigurační soubor '$CONFIG_DIR/$CONFIG_FILE'."
fi
success_message "Konfigurační soubor '$CONFIG_DIR/$CONFIG_FILE' vytvořen."
else
info_message "Konfigurační soubor '$CONFIG_DIR/$CONFIG_FILE' již existuje."
fi
info_message "Instalace dokončena."
success_message "Nyní můžete spustit aplikaci '$APP_NAME' z jakéhokoli místa v terminálu."
echo ""
echo -e "\033[1;33mPRO TIP:\nPokud \`$APP_NAME\` nefunguje z jakéhokoli místa, možná budete muset přidat '$INSTALL_DIR' do vašeho PATH.\nČasto se to dělá přidáním následujícího řádku do vašich shell profilů (~/.bashrc, ~/.zshrc, ~/.profile):\n\nexport PATH=\$PATH:$INSTALL_DIR\n\nPoté restartujte terminál nebo načtěte profil (např. \`source ~/.bashrc\`).\033[0m"
echo ""
# Vyčištění - smažeme pouze dočasný klonovaný adresář, ne aktuální
if [ -f "main.go" ] && [ -f "go.mod" ] && grep -q "module doxa-todo" go.mod; then
# Jsme v místním adresáři, nic nesmažeme
info_message "Instalace proběhla z místního adresáře, žádné dočasné soubory k vyčištění."
else
# Smažeme dočasný klonovaný adresář
cd ..
rm -rf "$APP_NAME"
info_message "Dočasné soubory byly vyčištěny."
fi
exit 0