stagit

Static Git page generator
git clone https://git.pngu.org/stagit
Log | Files | Refs | README | LICENSE

stagit-generate.sh (782B)


#!/usr/bin/env bash
set -e

REPO_PATH=$(realpath "$1")
REPOS_DIR="/var/lib/git/repositories"
OUTPUT_BASE="/var/www/git"

REPO_NAME=$(basename "$REPO_PATH" .git)
REPO_OUTPUT="$OUTPUT_BASE/$REPO_NAME"

declare -A IGNORED_REPOS
IGNORED_REPOS["testing"]=1

if [[ -n "${IGNORED_REPOS[$REPO_NAME]}" ]]; then
    exit 0
fi

mkdir -p "$REPO_OUTPUT"

cd "$REPO_OUTPUT"

ln -sf ../style.css ./style.css
ln -sf ../logo.png ./logo.png
ln -sf ../highlight ./highlight

stagit -c ./cachefile "$REPO_PATH"

cd "$OUTPUT_BASE"

INDEX_ARGS=()
for repo in "$REPOS_DIR"/*.git; do
    basename=$(basename "$repo" .git)
    if [[ -z "${IGNORED_REPOS[$basename]}" ]]; then
        INDEX_ARGS+=("$repo")
    fi
done

if [ ${#INDEX_ARGS[@]} -gt 0 ]; then
    stagit-index "${INDEX_ARGS[@]}" > index.html
fi