Initialisation du projet avec init de hugo.

Choix du theme nojs.
This commit is contained in:
mathieu
2026-07-19 23:47:59 +02:00
parent 760ac81368
commit 8971d04c88
13 changed files with 292 additions and 1 deletions
+64
View File
@@ -0,0 +1,64 @@
#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(dirname "${SCRIPT_DIR}")"
if [[ ! -f "${PROJECT_DIR}/.env" ]]; then
echo "Erreur : fichier .env introuvable."
exit 1
fi
set -a
source "${PROJECT_DIR}/.env"
set +a
IMG_NAME="${HUGO_IMAGE}:v${HUGO_VERSION}"
read -rp "Nom du site (exemple: fermebossejauque) : " NEW_SITE_NAME
if [[ -z "${NEW_SITE_NAME}" ]]; then
echo "Erreur : nom du site vide."
exit 1
fi
if [[ -d "${PROJECT_DIR}/${SITE_DIR}" ]] && [[ "$(ls -A "${PROJECT_DIR}/${SITE_DIR}")" ]]; then
echo "Erreur : ${SITE_DIR} existe déjà et n'est pas vide."
exit 1
fi
mkdir -p "${PROJECT_DIR}/${SITE_DIR}"
docker pull "${IMG_NAME}"
docker run --rm -it \
--name "${CONTAINER_NAME}-create" \
--entrypoint /bin/sh \
-u 0:0 \
-v "${PROJECT_DIR}:/src" \
"${IMG_NAME}" \
-c "
set -e
cd /src
hugo new site ${SITE_DIR}
cd ${SITE_DIR}
hugo mod init ${NEW_SITE_NAME}
"
sed -i "s/^SITE_NAME=.*/SITE_NAME=${NEW_SITE_NAME}/" "${PROJECT_DIR}/.env"
sed -i "s/^title = .*/title = \"${NEW_SITE_NAME}\"/" \
"${PROJECT_DIR}/${SITE_DIR}/hugo.toml"
cat >> "${PROJECT_DIR}/${SITE_DIR}/hugo.toml" <<EOF
theme = "${HUGO_THEME}"
EOF
echo
echo "Projet créé : ${NEW_SITE_NAME}"
echo "Pour la suite: .//script/init.sh"
Executable
+27
View File
@@ -0,0 +1,27 @@
#!/usr/bin/env bash
set -euo pipefail
if [[ ! -f ".env" ]]; then
echo "Erreur : fichier .env introuvable."
exit 1
fi
set -a
source .env
set +a
IMG_NAME="${HUGO_IMAGE}:v${HUGO_VERSION}"
docker run --rm -it \
-p "${HUGO_PORT}:1313" \
--name "${CONTAINER_NAME}" \
-u 0:0 \
-v "${PWD}/${SITE_DIR}:/src" \
-v "${PWD}/${CACHE_DIR}:/tmp/hugo_cache" \
-w /src \
"${IMG_NAME}" \
server \
--buildDrafts \
--cleanDestinationDir \
--bind 0.0.0.0
Executable
+26
View File
@@ -0,0 +1,26 @@
#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(dirname "${SCRIPT_DIR}")"
if [[ ! -f "${PROJECT_DIR}/.env" ]]; then
echo "Erreur : fichier .env introuvable."
exit 1
fi
set -a
source "${PROJECT_DIR}/.env"
set +a
IMG_NAME="${HUGO_IMAGE}:v${HUGO_VERSION}"
docker run --rm -it \
--name "${CONTAINER_NAME}" \
-u 0:0 \
-v "${PROJECT_DIR}/${SITE_DIR}:/src" \
-v "${PROJECT_DIR}/${CACHE_DIR}:/tmp/hugo_cache" \
-w /src \
"${IMG_NAME}" \
"$@" --noBuildLock
Executable
+45
View File
@@ -0,0 +1,45 @@
#!/usr/bin/env bash
set -euo pipefail
if [[ ! -f ".env" ]]; then
echo "Erreur : fichier .env introuvable."
exit 1
fi
set -a
source .env
set +a
IMG_NAME="${HUGO_IMAGE}:v${HUGO_VERSION}"
mkdir -p "${CACHE_DIR}"
docker pull "${IMG_NAME}"
docker run --rm -it \
--name "${CONTAINER_NAME}-init" \
--entrypoint /bin/sh \
-u 0:0 \
-v "${PWD}:/src" \
-v "${PWD}/${CACHE_DIR}:/tmp/hugo_cache" \
"${IMG_NAME}" \
-c "
set -e
cd /src/${SITE_DIR}
if [[ -n "${HUGO_THEME:-}" ]]; then
hugo mod get "${HUGO_THEME}"
fi
hugo mod get -u
hugo mod npm pack
npm install
hugo mod tidy
hugo mod vendor
"
echo
echo "Initialisation Hugo terminée."
echo "Pour la suite: ./script/dev.sh"
+36
View File
@@ -0,0 +1,36 @@
#!/usr/bin/env bash
set -euo pipefail
if [[ ! -f ".env" ]]; then
echo "Erreur : fichier .env introuvable."
exit 1
fi
set -a
source .env
set +a
IMG_NAME="${HUGO_IMAGE}:v${HUGO_VERSION}"
mkdir -p "${PUBLISH_DIR}"
docker run --rm \
--name "${CONTAINER_NAME}-publish" \
--user 0:0 \
-v "${PWD}/${SITE_DIR}:/src" \
-v "${PWD}/${CACHE_DIR}:/tmp/hugo_cache" \
-v "${PWD}/${PUBLISH_DIR}:/target" \
-w /src \
"${IMG_NAME}" \
--gc \
--minify \
--cleanDestinationDir \
--noBuildLock \
--noTimes \
-d /target \
-b "${URL_SITE}"
echo
echo "Site généré dans ./${PUBLISH_DIR}"
echo "Plus que scp ou rsync sur le site"