#!/usr/bin/env bash
set -euo pipefail
-if [ "$#" -ne 1 ]; then
- echo "Usage: import-maven-site.sh <path-to-hugo-content-root>"
+if [ "$#" -lt 1 ]
+then
+ echo "Usage: import-maven-site.sh <path-to-hugo-site> [<path-in-hugo-content>]"
exit 1
fi
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
HUGO_ROOT="$1"
+if [ "$#" -eq 2 ]
+then
+ PATH_IN_HUGO_CONTENT="$2"
+else
+ PATH_IN_HUGO_CONTENT=""
+fi
-command -v yq >/dev/null 2>&1 || { echo "yq is required"; exit 1; }
-
-YAML=$(sed -n '/MAVEN-NAVIGATION-BEGIN/,/MAVEN-NAVIGATION-END/p' "$SCRIPT_DIR/index.html" | sed '1d;$d')
-
-PATH_IN_HUGO_CONTENT=$(echo "$YAML" | yq -r '.path')
-
-TARGET="$HUGO_ROOT/content/$PATH_IN_HUGO_CONTENT"
-
-mkdir -p "$TARGET"
-
-declare -A MENU_PATH
-declare -A MENU_HAS_ITEMS
-declare -A MENU_DEPTH
+command -v jq >/dev/null 2>&1 || { echo "jq is required"; exit 1; }
-while IFS=$'\t' read -r path has_items href depth
-do
- href="${href#/}"
- src="$SCRIPT_DIR/$href"
- [ -f "$src" ] || continue
+JSON=$(sed -n '/MAVEN-NAVIGATION-BEGIN/,/MAVEN-NAVIGATION-END/p' "$SCRIPT_DIR/index.html" | sed '1d;$d')
- MENU_PATH["$href"]="$path"
- MENU_HAS_ITEMS["$href"]="$has_items"
- MENU_DEPTH["$href"]="$depth"
-done < <( echo "$YAML" | yq -r '
-def segment:
- sub("\\.html$"; "") | ltrimstr("/");
-def walk(path):
- if (.href | type) == "string" and .href != "" then
- (path + [(.href | segment)]) as $newPath
- | [
- ($newPath | join("/")),
- ((.items | length) > 0),
- .href,
- ($newPath | length)
- ],
- (.items[]? | walk($newPath))
- else
- (.items[]? | walk(path))
- end;
-.menus[].items[] | walk([])
-| @tsv
-')
+echo "$JSON" | jq -C .
-for href in "${!MENU_PATH[@]}"
+echo mkdir -p "$HUGO_ROOT/content/$PATH_IN_HUGO_CONTENT"
+for i in $(find "$SCRIPT_DIR" -maxdepth 1 -mindepth 1 -type f -name '*.html')
do
- src="$href"
- path="${MENU_PATH[$href]}"
- has_items="${MENU_HAS_ITEMS[$href]}"
-
- if [[ "$has_items" == "true" ]]
+ SOURCE="$i"
+ FILE=$(basename $SOURCE $SCRIPT_DIR)
+ PATH_IN_PROJECT=$(echo "$JSON" | jq -r '.pages[]|select(.href == "'"$FILE"'").path')
+ NUM_CHILDS=$(echo "$JSON" | jq -r '.pages[]|select(.href == "'"$FILE"'").childs|length')
+ TARGET="$HUGO_ROOT/content/$PATH_IN_HUGO_CONTENT$PATH_IN_PROJECT"
+ if [ "$NUM_CHILDS" -gt 0 ]
then
- dst="${TARGET}${path}/_index.html"
- else
- dst="${TARGET}${path}.html"
+ TARGET="$TARGET${FILE%.html}"
fi
-
- case "$href" in
- index.html)
- dst="${TARGET}_index.html"
- ;;
- esac
-
- mkdir -p "$(dirname "$dst")"
- cp -v "$src" "$dst"
+ echo mkdir -p $TARGET
+ echo cp $SOURCE $TARGET
done
-mkdir -p "$HUGO_ROOT/static/$PATH_IN_HUGO_CONTENT"
+echo mkdir -p "$HUGO_ROOT/static/$PATH_IN_HUGO_CONTENT"
for i in $(find "$SCRIPT_DIR" -maxdepth 1 -mindepth 1 -type d)
do
- cp -av "$i" "$HUGO_ROOT/static/$PATH_IN_HUGO_CONTENT"
+ echo cp -av "$i" "$HUGO_ROOT/static/$PATH_IN_HUGO_CONTENT"
done
+
+# for href in "${!MENU_PATH[@]}"
+# do
+# src="$href"
+# path="${MENU_PATH[$href]}"
+# has_items="${MENU_HAS_ITEMS[$href]}"
+#
+# if [[ "$has_items" == "true" ]]
+# then
+# dst="${TARGET}${path}/_index.html"
+# else
+# dst="${TARGET}${path}.html"
+# fi
+#
+# case "$href" in
+# index.html)
+# dst="${TARGET}_index.html"
+# ;;
+# esac
+#
+# mkdir -p "$(dirname "$dst")"
+# cp -v "$src" "$dst"
+# done
+