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:
+39
-19
@@ -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 @@
|
|||||||
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████████
|
||||||
Reference in New Issue
Block a user