mirror of
https://github.com/irssi/irssi.git
synced 2026-08-22 01:52:19 +02:00
152 lines
4.8 KiB
Bash
152 lines
4.8 KiB
Bash
|
|
#!/bin/sh
|
|||
|
|
|
|||
|
|
# configure.sh - Inteligentny, przenośny skrypt konfiguracyjny dla irssi-dev
|
|||
|
|
|
|||
|
|
# --- Funkcje Pomocnicze ---
|
|||
|
|
ask_yes_no() {
|
|||
|
|
while true; do
|
|||
|
|
printf "$1 [y/n]: "
|
|||
|
|
read -r answer
|
|||
|
|
case "$answer" in
|
|||
|
|
[Yy]*) return 0 ;;
|
|||
|
|
[Nn]*) return 1 ;;
|
|||
|
|
*) printf "Proszę odpowiedzieć 'y' lub 'n'.\n" ;;
|
|||
|
|
esac
|
|||
|
|
done
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
cleanup_backups() {
|
|||
|
|
printf "🧹 Czyszczenie plików tymczasowych (.bak)...
|
|||
|
|
"
|
|||
|
|
find . -name "*.bak" -type f -delete
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# --- Krok 1: Wykrywanie OS i ustawianie domyślnych ścieżek ---
|
|||
|
|
OS_TYPE=$(uname -s)
|
|||
|
|
DEFAULT_SYSTEM_PREFIX="/usr/local"
|
|||
|
|
DEFAULT_USER_PREFIX="$HOME/.local"
|
|||
|
|
|
|||
|
|
# --- Krok 2: Wykrywanie istniejącego irssi ---
|
|||
|
|
printf "🔎 Sprawdzanie istniejącej instalacji irssi...\n"
|
|||
|
|
EXISTING_IRSSI_BIN=$(command -v irssi)
|
|||
|
|
EXISTING_IRSSI_DIR="$HOME/.irssi"
|
|||
|
|
TARGET_NAME="irssi"
|
|||
|
|
|
|||
|
|
if [ -n "$EXISTING_IRSSI_BIN" ] || [ -d "$EXISTING_IRSSI_DIR" ]; then
|
|||
|
|
printf "⚠️ Wykryto istniejącą instalację irssi!\n"
|
|||
|
|
if [ -n "$EXISTING_IRSSI_BIN" ]; then
|
|||
|
|
printf " - Plik binarny znaleziony w: %s\n" "$EXISTING_IRSSI_BIN"
|
|||
|
|
fi
|
|||
|
|
if [ -d "$EXISTING_IRSSI_DIR" ]; then
|
|||
|
|
printf " - Katalog konfiguracyjny znaleziony w: %s\n" "$EXISTING_IRSSI_DIR"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
printf "\nMożesz zainstalować tę wersję jako główny program lub obok, pod inną nazwą.\n"
|
|||
|
|
printf "1. Zastąp (zainstaluj jako 'irssi')\n"
|
|||
|
|
printf "2. Zainstaluj obok (jako 'arssi')\n"
|
|||
|
|
|
|||
|
|
while true; do
|
|||
|
|
printf "Wybierz opcję [1/2]: "
|
|||
|
|
read -r choice
|
|||
|
|
case "$choice" in
|
|||
|
|
1)
|
|||
|
|
printf "Wybrano instalację jako 'irssi'.\n"
|
|||
|
|
printf "🚨 Pamiętaj, aby ręcznie odinstalować poprzednią wersję za pomocą menedżera pakietów, aby uniknąć konfliktów.\n"
|
|||
|
|
if ! ask_yes_no "Kontynuować?"; then printf "Przerwano.\n"; exit 1; fi
|
|||
|
|
TARGET_NAME="irssi"
|
|||
|
|
break
|
|||
|
|
;;
|
|||
|
|
2)
|
|||
|
|
printf "Wybrano instalację obok pod nazwą 'arssi'.\n"
|
|||
|
|
TARGET_NAME="arssi"
|
|||
|
|
break
|
|||
|
|
;;
|
|||
|
|
*) printf "Nieprawidłowy wybór.\n" ;;
|
|||
|
|
esac
|
|||
|
|
done
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# --- Krok 3: Wybór typu instalacji (Systemowa vs. Użytkownika) ---
|
|||
|
|
printf "\nWybierz typ instalacji:\n"
|
|||
|
|
printf "1. Systemowa (dla wszystkich użytkowników, wymaga sudo, zalecane: %s)\n" "$DEFAULT_SYSTEM_PREFIX"
|
|||
|
|
printf "2. Lokalna (tylko dla Ciebie, nie wymaga sudo, zalecane: %s)\n" "$DEFAULT_USER_PREFIX"
|
|||
|
|
|
|||
|
|
while true; do
|
|||
|
|
printf "Wybierz opcję [1/2]: "
|
|||
|
|
read -r choice
|
|||
|
|
case "$choice" in
|
|||
|
|
1)
|
|||
|
|
INSTALL_PREFIX="$DEFAULT_SYSTEM_PREFIX"
|
|||
|
|
SUDO_NEEDED="tak"
|
|||
|
|
break
|
|||
|
|
;;
|
|||
|
|
2)
|
|||
|
|
INSTALL_PREFIX="$DEFAULT_USER_PREFIX"
|
|||
|
|
SUDO_NEEDED="nie"
|
|||
|
|
break
|
|||
|
|
;;
|
|||
|
|
*) printf "Nieprawidłowy wybór.\n" ;;
|
|||
|
|
esac
|
|||
|
|
done
|
|||
|
|
|
|||
|
|
# --- Krok 4: Dynamiczna zmiana nazwy (jeśli to konieczne) ---
|
|||
|
|
MESON_OPTS=""
|
|||
|
|
if [ "$TARGET_NAME" != "irssi" ]; then
|
|||
|
|
printf "\n🔧 Konfigurowanie projektu do używania nazwy '%s'...
|
|||
|
|
" "$TARGET_NAME"
|
|||
|
|
MESON_OPTS="-Dpkgname=$TARGET_NAME"
|
|||
|
|
|
|||
|
|
# Zmiana nazwy binarnej w meson.build
|
|||
|
|
sed -i.bak "s/executable('irssi'/executable('$TARGET_NAME'/" src/fe-text/meson.build
|
|||
|
|
|
|||
|
|
# Zmiana katalogu domowego w common.h
|
|||
|
|
sed -i.bak "s|\"%s/.irssi\"|\"%s/.$TARGET_NAME\"|" src/common.h
|
|||
|
|
|
|||
|
|
# Zmiana ścieżek #include w całym kodzie
|
|||
|
|
printf "Aktualizowanie ścieżek #include...\n"
|
|||
|
|
for ext in c h xs; do
|
|||
|
|
find src tests -type f -name "*.$ext" -exec sed -i.bak "s|<irssi/|<$TARGET_NAME/|g" {} \;
|
|||
|
|
done
|
|||
|
|
|
|||
|
|
printf "✅ Konfiguracja nazwy zakończona.\n"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# --- Krok 5: Uruchomienie procesu budowania ---
|
|||
|
|
BUILD_DIR="$(pwd)/Build"
|
|||
|
|
|
|||
|
|
printf "\n🛠️ Przygotowywanie do budowania w katalogu: %s\n" "$BUILD_DIR"
|
|||
|
|
printf "📦 Prefiks instalacji: %s\n" "$INSTALL_PREFIX"
|
|||
|
|
|
|||
|
|
if [ -d "$BUILD_DIR" ]; then
|
|||
|
|
printf "Usuwanie istniejącego katalogu Build...\n"
|
|||
|
|
rm -rf "$BUILD_DIR"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
printf "\n⚙️ Uruchamianie Meson...\n"
|
|||
|
|
if ! meson setup "$BUILD_DIR" -Dprefix="$INSTALL_PREFIX" -Dwith-perl=yes -Dwith-proxy=yes $MESON_OPTS; then
|
|||
|
|
printf "❌ Błąd podczas konfiguracji Meson. Sprawdź logi powyżej.\n"
|
|||
|
|
cleanup_backups
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
printf "\n🔨 Uruchamianie Ninja (kompilacja)...
|
|||
|
|
"
|
|||
|
|
if ! ninja -C "$BUILD_DIR"; then
|
|||
|
|
printf "❌ Błąd podczas kompilacji. Sprawdź logi powyżej.\n"
|
|||
|
|
cleanup_backups
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# Czyszczenie po udanej kompilacji
|
|||
|
|
cleanup_backups
|
|||
|
|
|
|||
|
|
printf "\n✨ Kompilacja zakończona sukcesem!\n"
|
|||
|
|
printf "Aby zainstalować, uruchom następującą komendę:\n"
|
|||
|
|
if [ "$SUDO_NEEDED" = "tak" ]; then
|
|||
|
|
printf "sudo ninja -C %s install\n" "$BUILD_DIR"
|
|||
|
|
else
|
|||
|
|
printf "ninja -C %s install\n" "$BUILD_DIR"
|
|||
|
|
printf "\nUpewnij się, że katalog '%s/bin' jest dodany do Twojej zmiennej środowiskowej PATH.\n" "$INSTALL_PREFIX"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
exit 0
|