From: Kai Moritz Date: Sun, 3 May 2026 12:14:45 +0000 (+0200) Subject: Reworked Hugo-script: refined/simplified cli-switches X-Git-Url: http://juplo.de/gitweb/?a=commitdiff_plain;h=779b2266de2d06156f5091d1065a457bccc46673;p=maven-thymeleaf-skin Reworked Hugo-script: refined/simplified cli-switches --- diff --git a/src/main/resources/import-in-hugo.sh b/src/main/resources/import-in-hugo.sh index 1ff2c34..a40e226 100644 --- a/src/main/resources/import-in-hugo.sh +++ b/src/main/resources/import-in-hugo.sh @@ -2,7 +2,7 @@ set -euo pipefail USAGE=$( - echo "Usage: $0 [--base ] [--project ] [--separator ] [ [ --current []] | [--archived []] ]"; + echo "Usage: $0 [--base ] [--project ][ [ --current []] | [--archived [] [--canonical ]] ]"; cat << EOF --base : Specifies the base-path for the rendered site. @@ -10,18 +10,23 @@ USAGE=$( The artifact-id and the version are always added to the path. --project : Specifies the name of the project for path and url - (Default: ). + (Default: artifact-id of the maven-project). artifact-id and the version (Default: "/"). --current : [DEFAULT] - Adds "url: //" to front-matter. - If "" is not specified, "//" - is used. + Sets "url: //", "params.current=true" + and "params.canonical = /" in + front-matter. If "" is not specified, + "//" is used as "". Only one of "--current" and "--archived" can be used! ---archived : Adds "params.canonical=//" to - front-matter. - If "" is not specified, "//" - is used. +--archived : Sets "url: //", "params.current=false" + and "params.canonical = /" in + front-matter. If "" is not specified, + "//" is used as "" + If "" is not specified explicitly, + "/" is used as "" Only one of "--current" and "--archived" can be used! +--canonical : Explicitly specifies "" for "--archived". + Can only be specified when "--archived" is used! EOF ) @@ -39,6 +44,7 @@ shift PROJECT="" CURRENT=0 ARCHIVED=0 +URL_BASE="" CANONICAL="" command -v jq >/dev/null 2>&1 || { echo "ERROR -- jq is required"; exit 1; } @@ -79,10 +85,15 @@ while [[ $# -gt 0 ]]; do then shift else - CANONICAL="${2%%/}" - CANONICAL="${CANONICAL##/}" - CANONICAL="/$CANONICAL" - shift 2 + if [[ ! "$2" =~ ^-- ]] + then + URL_BASE="${2%%/}" + URL_BASE="${URL_BASE##/}" + URL_BASE="/$URL_BASE" + shift 2 + else + shift + fi fi ;; --archived) @@ -91,12 +102,28 @@ while [[ $# -gt 0 ]]; do then shift else - CANONICAL="${2%%/}" - CANONICAL="${CANONICAL##/}" - CANONICAL="/$CANONICAL" - shift 2 + if [[ ! "$2" =~ ^-- ]] + then + URL_BASE="${2%%/}" + URL_BASE="${URL_BASE##/}" + URL_BASE="/$URL_BASE" + shift 2 + else + shift + fi fi ;; + --canonical) + if [[ $# -lt 2 ]] + then + echo "ERROR -- Parameter for --canonical is missing!" + exit 1 + fi + CANONICAL="${2%%/}" + CANONICAL="${CANONICAL##/}" + CANONICAL="/$CANONICAL" + shift 2 + ;; *) echo "ERROR -- Unknown parameter: $1" echo @@ -117,6 +144,12 @@ if [[ "$CURRENT" -eq 0 && "$ARCHIVED" -eq 0 ]] then CURRENT=1 fi +if [[ "$CURRENT" -eq 1 ]] +then + CURRENT="true" +else + CURRENT="false" +fi echo "$JSON" | jq -C . @@ -126,6 +159,19 @@ then fi VERSION=$(echo "$JSON" | jq -r '.version') +PATH_BASE="$BASE/$PROJECT/$VERSION" + +if [[ -n "$URL_BASE" ]] +then + URL_BASE="${URL_BASE%/}" +else + URL_BASE="$BASE/$PROJECT" + if [[ "$ARCHIVED" -eq 1 ]] + then + URL_BASE="$URL_BASE/$VERSION" + fi +fi + if [[ -n "$CANONICAL" ]] then CANONICAL="${CANONICAL%/}" @@ -133,8 +179,6 @@ else CANONICAL="$BASE/$PROJECT" fi -BASE="$BASE/$PROJECT/$VERSION" - for i in $(find "$SCRIPT_DIR" -maxdepth 1 -mindepth 1 -type f -name '*.html') do SOURCE="$i" @@ -148,8 +192,8 @@ do then TITLE=$(echo "$JSON" | jq -r .project) URL="/" - mkdir -p "$HUGO_ROOT/content$BASE" - TARGET="$HUGO_ROOT/content$BASE/_index.html" + mkdir -p "$HUGO_ROOT/content$PATH_BASE" + TARGET="$HUGO_ROOT/content$PATH_BASE/_index.html" else TITLE=$(echo "$PAGE" | jq -r .name) URL="/$FILE" @@ -161,11 +205,11 @@ do fi if [ "$NUM_CHILDS" -gt 0 ] then - mkdir -p "$HUGO_ROOT/content$BASE$URL_PATH${FILE%.html}" - TARGET="$HUGO_ROOT/content$BASE$URL_PATH${FILE%.html}/_index.html" + mkdir -p "$HUGO_ROOT/content$PATH_BASE$URL_PATH${FILE%.html}" + TARGET="$HUGO_ROOT/content$PATH_BASE$URL_PATH${FILE%.html}/_index.html" else - mkdir -p "$HUGO_ROOT/content$BASE$URL_PATH" - TARGET="$HUGO_ROOT/content$BASE$URL_PATH$FILE" + mkdir -p "$HUGO_ROOT/content$PATH_BASE$URL_PATH" + TARGET="$HUGO_ROOT/content$PATH_BASE$URL_PATH$FILE" fi fi echo "Generating page $TARGET" @@ -174,42 +218,31 @@ do echo "weight: $(echo "$PAGE_ENTRY" | jq -r .key)" >> $TARGET echo "outputs:" >> $TARGET echo " - html" >> $TARGET - if [[ "$CURRENT" -eq 1 ]] - then - echo "url: $CANONICAL$URL" >> $TARGET - else - echo "url: $BASE$URL" >> $TARGET - fi + echo "url: $URL_BASE$URL" >> $TARGET echo "layout: article" >> $TARGET echo "params:" >> $TARGET - if [[ "$CURRENT" -eq 1 ]] - then - echo " current: true" >> $TARGET - fi - if [[ "$ARCHIVED" -eq 1 ]] - then - echo " canonical: $CANONICAL$URL" >> $TARGET - fi + echo " current: $CURRENT" >> $TARGET + echo " canonical: $CANONICAL$URL" >> $TARGET echo "---" >> $TARGET sed -n '/" >> "$TARGET" echo "" >> "$TARGET"