Deploy test site / deploy (push) Successful in 55s
User, 19 Oct 2026: build a high-end investor pitch deck; the whole plant, web slides on the test site with presenter mode plus a PDF, 12 to 15 slides, both plans, for a BOI / bank / institutional reader. - docs/pitch/index.html (site /pitch/): title, opportunity, the chain under one roof, how a record is made (9 stages, 3 gates, traceability, ERPNext), platform, site and building, sustainability and region, investment A vs B by block with the six levers (no contingency in either price), operating picture with the adverse case, ten-year cash and returns (calculator presets), BOI promotion and the 3:1 debt-to-equity condition (financing structure to be agreed), schedule, risks, team and vendors, the ask (phase 0 then tranches). - Every figure carries a source line (business plans draft 0.3 and the owning docs); speaker notes per slide; P opens a synced presenter window, O the overview, F fullscreen, #n deep links. - img/: six WebP pictures (calculator renders, order tool, fan funding, record passport); CNX-Vinyl-Investor-Deck.pdf, 15 pages 16:9, images re-encoded to 1.5 MB. - site/build.sh copies docs/pitch/ to /pitch/ (new DIRS list); the deploy also triggers on docs/pitch/**; landing page and README entries. - Checks: 15 slides at 1920/1440/1280/390 px without overflow, navigation, presenter sync both ways, PDF pages and text, no em dashes.
75 lines
2.4 KiB
Bash
75 lines
2.4 KiB
Bash
#!/usr/bin/env bash
|
|
# Assemble the cnxvinyl.lol web root in site/dist.
|
|
#
|
|
# site/public/ copied verbatim: landing page, robots.txt, and any static
|
|
# site dropped in as its own directory (site/public/<name>/)
|
|
# DEMOS below pages copied out of docs/, so docs/ stays their one source
|
|
#
|
|
# Run locally with `bash site/build.sh`, then open site/dist/index.html.
|
|
# CI (.gitea/workflows/deploy-site.yml) runs the same script and deploys
|
|
# site/dist as it is.
|
|
set -euo pipefail
|
|
cd "$(dirname "$0")/.."
|
|
|
|
out=site/dist
|
|
rm -rf "$out"
|
|
mkdir -p "$out"
|
|
cp -R site/public/. "$out/"
|
|
|
|
# "<source in the repo> <path under the web root>"
|
|
DEMOS=(
|
|
"docs/plant-operation.html demos/plant-operation/index.html"
|
|
"docs/fleet-calculator.html demos/fleet-calculator/index.html"
|
|
"docs/steam-cooling.html demos/steam-cooling/index.html"
|
|
"docs/order.html demos/order/index.html"
|
|
"docs/artist-order.html demos/artist-order/index.html"
|
|
"docs/make-a-record.html demos/make-a-record/index.html"
|
|
"docs/factory-console.html demos/factory/index.html"
|
|
)
|
|
for entry in "${DEMOS[@]}"; do
|
|
read -r src dst <<<"$entry"
|
|
mkdir -p "$out/$(dirname "$dst")"
|
|
cp "$src" "$out/$dst"
|
|
done
|
|
|
|
# "<directory in the repo> <directory under the web root>": multi-file
|
|
# pages (a page with its images and downloads), copied whole
|
|
DIRS=(
|
|
"docs/pitch pitch"
|
|
)
|
|
for entry in "${DIRS[@]}"; do
|
|
read -r src dst <<<"$entry"
|
|
mkdir -p "$out/$dst"
|
|
cp -R "$src/." "$out/$dst/"
|
|
done
|
|
|
|
# The deploy job reads this back from the server to confirm what is live.
|
|
git rev-parse HEAD >"$out/version.txt" 2>/dev/null || echo unknown >"$out/version.txt"
|
|
|
|
# Fail on a dead internal link: every href/src in every page that points
|
|
# inside the site must resolve to a file in dist.
|
|
dead=0
|
|
while IFS= read -r page; do
|
|
dir=$(dirname "$page")
|
|
while IFS= read -r ref; do
|
|
# shellcheck disable=SC2016 # literal ${ and {{ mark JS/template strings
|
|
case "$ref" in
|
|
'' | '#'* | http:* | https:* | mailto:* | tel:* | data:* | javascript:* | *'${'* | *'{{'*) continue ;;
|
|
esac
|
|
ref=${ref%%#*}
|
|
ref=${ref%%\?*}
|
|
case "$ref" in
|
|
/*) target="$out$ref" ;;
|
|
*) target="$dir/$ref" ;;
|
|
esac
|
|
[ -d "$target" ] && target="${target%/}/index.html"
|
|
if [ ! -f "$target" ]; then
|
|
echo "dead link in ${page#"$out"/}: $ref" >&2
|
|
dead=1
|
|
fi
|
|
done < <(grep -o -E '(href|src)="[^"]*"' "$page" | sed -E 's/^(href|src)="//; s/"$//')
|
|
done < <(find "$out" -name '*.html')
|
|
[ "$dead" -eq 0 ] || exit 1
|
|
|
|
echo "built $out: $(find "$out" -type f | wc -l | tr -d ' ') files"
|