gitpages

A collection of scripts to securely webhost and publish git repositories.
git clone https://scm.kuandu.systems/git-raw/gitpages.git
Log | Files | Refs | README | LICENSE

test-gitpages-setup.sh (2025B)


      1 #!/bin/sh
      2 
      3 set -eu
      4 
      5 WORKDIR=""
      6 TARGET=""
      7 
      8 log() { printf 'test: %s\n' "$1"; }
      9 die() {
     10   printf 'test: error: %s\n' "$1" >&2
     11   exit 1
     12 }
     13 
     14 cleanup() {
     15 	if [ -n "$WORKDIR" ] && [ -d "$WORKDIR" ]; then
     16 		rm -rf "$WORKDIR"
     17 	fi
     18 }
     19 
     20 setup_dirs() {
     21   WORKDIR="$(mktemp -d -t gitpages_test.XXXXXX)" \
     22     || die "mktemp failed"
     23 
     24 	trap cleanup EXIT HUP INT TERM
     25 
     26   TARGET="$WORKDIR/repos"
     27   mkdir "$TARGET"
     28 
     29   # Quiet git default‑branch hint
     30   GIT_CONFIG_NOSYSTEM=1 \
     31     git config --global init.defaultBranch main
     32 
     33   log "created test workspace in $WORKDIR"
     34 }
     35 
     36 setup_repos() {
     37   git init --bare "$TARGET/foo.git"
     38   git init --bare "$TARGET/bar.git"
     39   log "created foo.git and bar.git"
     40 }
     41 
     42 run_gitpages_init() {
     43   log "running gitpages-init-repos.sh"
     44 
     45   # Feed 3 lines per repo: desc, owner, url
     46   (
     47     printf '%s\n' "Description for foo"
     48     printf '%s\n' "user@foo.org"
     49     printf '%s\n' "https://foo.example.com"
     50 
     51     printf '%s\n' "Description for bar"
     52     printf '%s\n' "user@bar.org"
     53     printf '%s\n' "https://bar.example.com"
     54   ) | ./gitpages.sh setup "$TARGET"
     55 }
     56 
     57 inspect_repos() {
     58   log "contents of repos:"
     59   for repo in "$TARGET"/*.git; do
     60     if [ -d "$repo" ]; then
     61       repo_name=$(basename "$repo" .git)
     62       printf '\n== %s ==\n' "$repo_name"
     63 
     64       if [ -f "$repo/description" ]; then
     65         printf 'desc:\n'
     66         cat "$repo/description"
     67       else
     68         printf 'desc: (MISSING!)\n'
     69       fi
     70 
     71       if [ -f "$repo/owner" ]; then
     72         printf '\nowner:\n'
     73         cat "$repo/owner"
     74       else
     75         printf 'owner: (MISSING!)\n'
     76       fi
     77 
     78       if [ -f "$repo/url" ]; then
     79         printf '\nurl:\n'
     80         cat "$repo/url"
     81       else
     82         printf 'url: (MISSING!)\n'
     83       fi
     84 
     85       hook="$repo/hooks/post-receive"
     86       if [ -f "$hook" ]; then
     87         printf '\npost-receive (head 10):\n'
     88         head -10 "$hook"
     89       else
     90         printf 'post-receive hook: (MISSING!)\n'
     91       fi
     92     fi
     93   done
     94 }
     95 
     96 main() {
     97   setup_dirs
     98   setup_repos
     99   run_gitpages_init
    100   inspect_repos
    101 
    102   log "test complete"
    103 }
    104 
    105 main