1# Owner pages and /topics/ show repos as cards on shelves: the category2# its owner wrote in the bare repo's category file, else "other" (Jev's3# topic is off in scenarios); fuller shelves first, "other" last, newest4# first on each. Private repos have no card, and backups keep the file.5. "$(dirname "$0")/../lib.sh"6user dami7user ana8for r in dami/chess dami/go ana/notes; do9 repo "$r"10 clone dami "$r" "$T/w/${r#*/}"11 tick 360012 at "$T/w/${r#*/}" commit "first"13 push_as "${r%%/*}" "$T/w/${r#*/}" origin main14done15repo --private dami/secret16printf 'Games\n' >"$FORGE_ROOT/dami/chess.git/category"17printf 'games\n' >"$FORGE_ROOT/dami/go.git/category"18export FORGE_STRICT=119build20i=$FORGE_WWW/topics/index.html21has "$i" '<section class="panel shelf" data-shelf="games" id="games">'22has "$i" '<section class="panel shelf" data-shelf="other" id="other">'23# "all" (data-shelf ""), then games (two repos) before other (one); ana's24# notes was pushed last, so it leads "all", and go leads games.25eq "$(grep -o '<section class="panel shelf" data-shelf="[a-z]*"' "$i" | sed 's/.*="//; s/"//' | tr '\n' ' ')" " games other "26eq "$(grep -o 'class="card-name" href="/[a-z]*/[a-z]*/"' "$i" | sed 's/.*href="//; s/"//' | tr '\n' ' ')" "/ana/notes/ /dami/go/ /dami/chess/ /dami/go/ /dami/chess/ /ana/notes/ "27# Several owners: each card names its owner.28has "$i" '<span class="desc">dami / </span>go</a>'29lacks "$i" 'secret'30# One shelf is all there is: no "all" panel, and the shelf stands for it.31has "$FORGE_WWW/dami/index.html" '<section class="panel shelf" data-shelf="" id="games">'32lacks "$FORGE_WWW/dami/index.html" '<span class="desc">dami / </span>'33# One owner's only shelf is "other": no tabs, and no head strip either.34lacks "$FORGE_WWW/ana/index.html" 'class="panel-head"><h2>(repositories|other)</h2>'35ok forge backup --dry-run36has "$FORGE_ROOT/.forge/backup/stage/dami/chess.git/category" '^Games$'