You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
2.2 KiB
65 lines
2.2 KiB
# -*- mode: shell-script -*-
|
|
|
|
HUGO_CONFIG="/etc/hugo"
|
|
HUGO_BASE="/opt/apps/hugo"
|
|
HUGO_SOURCE="$HUGO_BASE/src"
|
|
HUGO_OUTPUT="$HUGO_BASE/output"
|
|
HUGO_THEME="$HUGO_BASE/theme"
|
|
|
|
|
|
HOST_HUGO_SOURCE="$SERVICE_DATASTORE$HUGO_BASE/src"
|
|
HOST_HUGO_OUTPUT="$SERVICE_DATASTORE$HUGO_BASE/output"
|
|
HOST_HUGO_THEME="$SERVICE_DATASTORE$HUGO_BASE/theme"
|
|
HOST_HUGO_CONFIG="$SERVICE_CONFIGSTORE$HUGO_CONFIG"
|
|
|
|
HUGO_BUILDER_DEFAULT_IMAGE="docker.0k.io/hugo:0.88.1"
|
|
|
|
|
|
hugo:init-dir() {
|
|
mkdir -p "$HOST_HUGO_SOURCE" || return 1
|
|
cd "$HOST_HUGO_SOURCE" &&
|
|
git config --global user.email "compose@mail.com" &&
|
|
git config --global user.name "compose" &&
|
|
docker run --rm -v "$HOST_HUGO_SOURCE":"$HUGO_SOURCE" \
|
|
-w "$HUGO_SOURCE" "$HUGO_BUILDER_DEFAULT_IMAGE" \
|
|
new site -f yaml . &&
|
|
docker run --rm -v "$HOST_HUGO_SOURCE":"$HUGO_SOURCE" \
|
|
-w "$HUGO_SOURCE" "$HUGO_BUILDER_DEFAULT_IMAGE" \
|
|
new posts/my-first-post.md &&
|
|
sed -ri '/^baseURL:/d' config.yaml &&
|
|
git init &&
|
|
git add -A . &&
|
|
git commit -m "First import"
|
|
}
|
|
|
|
|
|
hugo:generate() {
|
|
local src="$1" dst="$2" configs c
|
|
|
|
theme_url=$(options-get theme-url 2>/dev/null) || true
|
|
theme_url=${theme_url:-https://github.com/theNewDynamic/gohugo-theme-ananke.git}
|
|
|
|
if ! [ -d "$HOST_HUGO_THEME/default" ]; then
|
|
mkdir -p "$HOST_HUGO_THEME"
|
|
git clone "${theme_url}" "$HOST_HUGO_THEME/default" || {
|
|
err "Could not clone theme '$HOST_HUGO_THEME'."
|
|
return 1
|
|
}
|
|
fi
|
|
echo "theme: default" > "$HOST_HUGO_CONFIG/80-theme.yaml"
|
|
config_files=("$HOST_HUGO_CONFIG/"*.yaml)
|
|
configs=""
|
|
for c in "${config_files[@]}"; do
|
|
configs+="config${c#$SERVICE_CONFIGSTORE$HUGO_CONFIG},"
|
|
done
|
|
mkdir -p "$dst" || return 1
|
|
docker run --rm -v "$src":"$HUGO_SOURCE" \
|
|
-v "$dst":"$HUGO_OUTPUT" \
|
|
-v "$HOST_HUGO_CONFIG":"$HUGO_CONFIG" \
|
|
-v "$HOST_HUGO_THEME":"$HUGO_SOURCE/themes" \
|
|
-v "$HOST_HUGO_CONFIG":"$HUGO_SOURCE/config" \
|
|
-w "$HUGO_SOURCE" "$HUGO_BUILDER_DEFAULT_IMAGE" \
|
|
-D --config "${configs}config.yaml" \
|
|
-d "${dst#$SERVICE_DATASTORE}" &&
|
|
find "$HOST_HUGO_SOURCE" -depth -type d -empty -delete
|
|
}
|