Scripts: setup.sh, build.sh, serve.sh (Docker-based) Content: about, config, software, posts sections Custom: CSS overrides, HTML sitemap layout, extended_head partial Theme: hugo-theme-terminal via Hugo modules (go.mod)
104 lines
2.4 KiB
Bash
Executable file
104 lines
2.4 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# Initialize a Hugo site with the Terminal theme using Docker.
|
|
# Usage: ./scripts/setup.sh
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
|
|
SITE_DIR="${PROJECT_ROOT}/site"
|
|
HUGO_IMAGE="ghcr.io/gohugoio/hugo:latest"
|
|
|
|
hugo() {
|
|
docker run --rm \
|
|
-v "${SITE_DIR}:/src" \
|
|
-w /src \
|
|
"${HUGO_IMAGE}" "$@"
|
|
}
|
|
|
|
if [[ -d "${SITE_DIR}" ]]; then
|
|
echo "[setup] Site directory already exists: ${SITE_DIR}"
|
|
echo "[setup] Delete it first if you want a fresh start."
|
|
exit 1
|
|
fi
|
|
|
|
echo "[setup] Creating new Hugo site in ${SITE_DIR}"
|
|
mkdir -p "${SITE_DIR}"
|
|
docker run --rm \
|
|
-v "${PROJECT_ROOT}:/src" \
|
|
-w /src \
|
|
"${HUGO_IMAGE}" new site site
|
|
|
|
echo "[setup] Initializing Hugo module"
|
|
hugo mod init gohugo-jm
|
|
|
|
echo "[setup] Writing hugo.toml"
|
|
cat > "${SITE_DIR}/hugo.toml" << 'EOF'
|
|
baseURL = "http://localhost:1313/"
|
|
languageCode = "en-us"
|
|
title = "JM's Site"
|
|
pagination.pagerSize = 5
|
|
|
|
[markup.highlight]
|
|
noClasses = false
|
|
|
|
[params]
|
|
contentTypeName = "posts"
|
|
showMenuItems = 2
|
|
fullWidthTheme = false
|
|
centerTheme = true
|
|
|
|
[languages]
|
|
[languages.en]
|
|
languageName = "English"
|
|
title = "JM's Site"
|
|
|
|
[languages.en.params]
|
|
subtitle = "hello, it's JM"
|
|
owner = "JM"
|
|
keywords = ""
|
|
copyright = ""
|
|
menuMore = "Show more"
|
|
readMore = "Read more"
|
|
readOtherPosts = "Read other posts"
|
|
newerPosts = "Newer posts"
|
|
olderPosts = "Older posts"
|
|
missingContentMessage = "Page not found..."
|
|
missingBackButtonLabel = "Back to home page"
|
|
minuteReadingTime = "min read"
|
|
words = "words"
|
|
|
|
[languages.en.params.logo]
|
|
logoText = "JM's Terminal"
|
|
logoHomeLink = "/"
|
|
|
|
[languages.en.menu]
|
|
[[languages.en.menu.main]]
|
|
identifier = "about"
|
|
name = "About"
|
|
url = "/about"
|
|
|
|
[module]
|
|
[[module.imports]]
|
|
path = 'github.com/panr/hugo-theme-terminal/v4'
|
|
EOF
|
|
|
|
echo "[setup] Fetching theme module"
|
|
hugo mod get github.com/panr/hugo-theme-terminal/v4
|
|
|
|
echo "[setup] Creating first post"
|
|
mkdir -p "${SITE_DIR}/content/posts"
|
|
cat > "${SITE_DIR}/content/posts/hello.md" << 'EOF'
|
|
---
|
|
title: "Hello, it's JM"
|
|
date: 2026-04-03
|
|
draft: false
|
|
---
|
|
|
|
Hello, it's JM. Welcome to my site.
|
|
|
|
This is my first post, built with [Hugo](https://gohugo.io/) and the
|
|
[Terminal](https://github.com/panr/hugo-theme-terminal) theme.
|
|
EOF
|
|
|
|
echo "[setup] Done. Run ./scripts/build.sh to serve the site."
|