feat(build): refactor build script with interactive version and variant selection

Replace automatic version reading from VERSION file with interactive prompts for version (major.minor.build) and ISO variant name (e.g., cli, gnome, kde).

Changes:
- Remove automatic VERSION file reading; now serves as default with prompt
- Add interactive prompts for version and variant name with validation
- Simplify ISO naming from FWS-v{major}-{minor}-{build}-{date}-x86_64.iso to fws-{version}-{variant}.iso
- Update hostname from 'archiso' to 'fws'
- Add custom FWS logo for fastfetch with color configuration
- Improve error messages and user feedback

This enables flexible build variants and streamlines the build process.
This commit is contained in:
2026-06-23 11:02:41 +02:00
parent 7d6bba42b2
commit 0de970239f
5 changed files with 60 additions and 22 deletions
+1 -1
View File
@@ -1 +1 @@
0.5.3 0.5.4
+39 -19
View File
@@ -193,29 +193,49 @@ WORK_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
echo "==> Dossier de travail : $WORK_DIR" echo "==> Dossier de travail : $WORK_DIR"
# ============================================================ # ============================================================
# Lecture et validation de la version (fichier VERSION) # Version (major.minor.build) + nom de la variante.
# La version est DEMANDÉE ; le fichier VERSION sert de DÉFAUT (taper Entrée =
# reprendre sa valeur). Produit fws-<major.minor.build>-<nom>.iso
# (ex. fws-1.5.0-cli.iso). Nécessite un terminal (read).
# ============================================================ # ============================================================
# Défaut éventuel lu dans le fichier VERSION (doit être major.minor.build).
VERSION_FILE="$WORK_DIR/VERSION" VERSION_FILE="$WORK_DIR/VERSION"
[ -f "$VERSION_FILE" ] \ VERSION_DEFAULT=""
|| { echo -e "\e[31mFichier VERSION introuvable : $VERSION_FILE\e[0m"; exit 1; } if [ -f "$VERSION_FILE" ]; then
VERSION_DEFAULT="$(tr -d ' \t\r\n' < "$VERSION_FILE")"
# Trim espaces / tabulations / CR / LF [[ "$VERSION_DEFAULT" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] || VERSION_DEFAULT=""
VERSION="$(tr -d ' \t\r\n' < "$VERSION_FILE")"
if [[ ! "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo -e "\e[31mVERSION invalide : '$VERSION' (attendu Major.Minor.Build, ex. 1.2.3)\e[0m"
exit 1
fi fi
IFS='.' read -r MAJOR MINOR BUILD <<< "$VERSION" while :; do
BUILD_DATE="$(date +%Y.%m.%d)" if [ -n "$VERSION_DEFAULT" ]; then
ISO_VERSION="v${MAJOR}-${MINOR}-${BUILD}-${BUILD_DATE}" read -rp "==> Version (major.minor.build) [Entrée = $VERSION_DEFAULT] : " VERSION \
OUT_DIR="$WORK_DIR/out/v${MAJOR}/v${MAJOR}.${MINOR}" || { echo -e "\e[31mEntrée requise — lance le script en interactif.\e[0m" >&2; exit 1; }
ISO_FILE="$OUT_DIR/FWS-${ISO_VERSION}-x86_64.iso" [ -n "$VERSION" ] || VERSION="$VERSION_DEFAULT" # vide → on reprend le fichier VERSION
else
read -rp "==> Version (major.minor.build, ex. 1.5.0) : " VERSION \
|| { echo -e "\e[31mEntrée requise — lance le script en interactif.\e[0m" >&2; exit 1; }
fi
[[ "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] && break
echo -e "\e[31m Format attendu : major.minor.build (ex. 1.5.0)\e[0m" >&2
done
while :; do
read -rp "==> Nom de la variante (ex. cli, gnome, kde) : " ISO_TAG \
|| { echo -e "\e[31mEntrée requise — lance le script en interactif.\e[0m" >&2; exit 1; }
# normalise : minuscules, lettres / chiffres / tirets uniquement
ISO_TAG="$(printf '%s' "$ISO_TAG" | tr '[:upper:]' '[:lower:]' | tr -cd 'a-z0-9-')"
[ -n "$ISO_TAG" ] && break
echo -e "\e[31m Nom requis (lettres, chiffres, tirets)\e[0m" >&2
done
echo "==> Version officielle : ${MAJOR}.${MINOR}.${BUILD}" IFS='.' read -r MAJOR MINOR BUILD <<< "$VERSION"
echo "==> Dossier de sortie : $OUT_DIR" # iso_version interne (passé à mkarchiso) ; l'ISO finale est renommée plus bas.
echo "==> ISO finale : FWS-${ISO_VERSION}-x86_64.iso" ISO_VERSION="${VERSION}-${ISO_TAG}"
OUT_DIR="$WORK_DIR/out/v${MAJOR}/v${MAJOR}.${MINOR}"
ISO_FILE="$OUT_DIR/fws-${VERSION}-${ISO_TAG}.iso"
echo "==> Version : ${VERSION} · variante : ${ISO_TAG}"
echo "==> ISO finale : fws-${VERSION}-${ISO_TAG}.iso"
echo "==> Dossier : $OUT_DIR"
# pacman ≥ 7 sandboxe les ops FS via landlock, non supporté par le kernel # pacman ≥ 7 sandboxe les ops FS via landlock, non supporté par le kernel
# WSL ni (selon le noyau) par le conteneur → désactivation. Idempotent, # WSL ni (selon le noyau) par le conteneur → désactivation. Idempotent,
@@ -324,4 +344,4 @@ echo "==> Nettoyage..."
rm -rf /tmp/fws-build/work rm -rf /tmp/fws-build/work
echo "==> Build officiel terminé ! ISO : $FINAL" echo "==> Build officiel terminé ! ISO : $FINAL"
echo -e "\e[32mScript de build officiel (v${MAJOR}.${MINOR}.${BUILD}) terminé avec succès.\e[0m" echo -e "\e[32mScript de build officiel (fws-${VERSION}-${ISO_TAG}) terminé avec succès.\e[0m"
+1 -1
View File
@@ -1 +1 @@
archiso fws
@@ -5,5 +5,14 @@
# On utilise donc un autre nom. # On utilise donc un autre nom.
_fastfetch_rc=$? _fastfetch_rc=$?
if [ "${_fastfetch_rc}" -eq 0 ]; then if [ "${_fastfetch_rc}" -eq 0 ]; then
fastfetch # Logo FWS maison (4 carrés + Tux) au lieu du logo Arch détecté par défaut.
fastfetch \
--logo-type file \
--logo /usr/local/share/fws/logo.txt \
--logo-color-1 '38;2;30;160;100' \
--logo-color-2 '38;2;45;125;210' \
--logo-color-3 '38;2;240;180;40' \
--logo-color-4 '38;2;25;85;145' \
--logo-color-5 '38;2;28;28;34' \
--logo-color-6 '38;2;245;165;35'
fi fi
@@ -0,0 +1,9 @@
$1████████ $2██$5████$2██
$1████████ $2█$5██$2██$5██$2█
$1████████ $2█$5██████$2█
$1████████ $2██$6█$2██$6█$2██
$3████████ $4████████
$3████████ $4████████
$3████████ $4████████
$3████████ $4████████