set -euo pipefail
USAGE=$(
- echo "Usage: $0 <HUGO_ROOT> [--base <path>] [--project ] [--separator ] [ [ --current [<canonical>]] | [--archived [<canonical>]] ]";
+ echo "Usage: $0 <HUGO_ROOT> [--base <path>] [--project <name>][ [ --current [<url>]] | [--archived [<url>] [--canonical <url>]] ]";
cat << EOF
--base : Specifies the base-path for the rendered site.
The artifact-id and the version are always added to the
path.
--project : Specifies the name of the project for path and url
- (Default: <artifact-id>).
+ (Default: artifact-id of the maven-project).
artifact-id and the version (Default: "/").
--current : [DEFAULT]
- Adds "url: <canonical>/<path_in_site>/" to front-matter.
- If "<cononical>" is not specified, "<path>/<project>/"
- is used.
+ Sets "url: /<url>/<path_in_site>", "params.current=true"
+ and "params.canonical = <url>/<path_in_site>" in
+ front-matter. If "<url>" is not specified,
+ "<path>/<project>/" is used as "<url>".
Only one of "--current" and "--archived" can be used!
---archived : Adds "params.canonical=<canonical>/<path_in_site>/" to
- front-matter.
- If "<cononical>" is not specified, "<path>/<project>/"
- is used.
+--archived : Sets "url: /<url>/<path_in_site>", "params.current=false"
+ and "params.canonical = <canonical>/<path_in_site>" in
+ front-matter. If "<url>" is not specified,
+ "<path>/<project>/<version>" is used as "<url>"
+ If "<canonical>" is not specified explicitly,
+ "<path>/<project>" is used as "<canonical>"
Only one of "--current" and "--archived" can be used!
+--canonical : Explicitly specifies "<canonical>" for "--archived".
+ Can only be specified when "--archived" is used!
EOF
)
PROJECT=""
CURRENT=0
ARCHIVED=0
+URL_BASE=""
CANONICAL=""
command -v jq >/dev/null 2>&1 || { echo "ERROR -- jq is required"; exit 1; }
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)
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
then
CURRENT=1
fi
+if [[ "$CURRENT" -eq 1 ]]
+then
+ CURRENT="true"
+else
+ CURRENT="false"
+fi
echo "$JSON" | jq -C .
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%/}"
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"
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"
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"
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 '/<script id="sili-json" type="application\/json">/q;p' "$SOURCE" \
| tail -n +2 \
| perl -0777 -MHTML::Entities -pe 's#<pre\b[^>]*>(.*?)</pre>#"{{< highlight guess >}}\n".decode_entities($1)."\n{{< /highlight >}}"#gse' >> "$TARGET"
done
-mkdir -p "$HUGO_ROOT/static$BASE"
+mkdir -p "$HUGO_ROOT/static$URL_BASE"
for i in $(find "$SCRIPT_DIR" -maxdepth 1 -mindepth 1 -type d)
do
DIR=$(basename $i $SCRIPT_DIR)
echo "Copying additionally static content from $DIR"
- cp -av "$i" "$HUGO_ROOT/static$BASE"
+ cp -av "$i" "$HUGO_ROOT/static$URL_BASE"
PAGE_ENTRY=$(echo "$JSON" | jq '.pages|to_entries[]|select(.value.href|test("^'"$DIR"'/"))')
if [[ "$PAGE_ENTRY" != "" ]]
then
echo "$PAGE_ENTRY" | jq -C .
PAGE=$(echo "$PAGE_ENTRY" | jq .value)
URL_PATH=/$(echo "$PAGE" | jq -r .path)
- TARGET="$HUGO_ROOT/content$BASE$URL_PATH$DIR"
- mkdir -p "$HUGO_ROOT/content$BASE$URL_PATH$DIR"
+ TARGET="$HUGO_ROOT/content$PATH_BASE$URL_PATH$DIR"
+ mkdir -p "$HUGO_ROOT/content$PATH_BASE$URL_PATH$DIR"
TARGET="$TARGET/_index.html"
echo "Generating page $TARGET"
TITLE=$(echo "$PAGE" | jq -r .name)
HREF=$(echo "$PAGE" | jq -r .href)
echo "---" > "$TARGET"
echo "title: $TITLE" >> "$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 "weight: $WEIGHT" >> "$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"
echo "<script type="text/javascript">window.location.replace('../../$HREF')</script>" >> "$TARGET"
echo "<noscript><p>JavaScript is deactivated.</p></noscript>" >> "$TARGET"