all repos — site @ c50ac616b601daa459e1efc515aaf5126828e321

source for my site, found at icyphox.sh

bin/wiki.sh (view raw)

 1#!/usr/bin/env bash
 2
 3# wiki.sh -- helper script to generate a wiki
 4# does all kinds of weird shit. this is NOT how you engineer software, people.
 5
 6WIKI_PATH="pages/wiki"
 7ROOT_INDEX_MD="pages/wiki/_index.md"
 8
 9noext() {
10   printf '%s' "${1%%'.md'}"
11}
12
13topic() {
14    entry="$1"
15    mkdir "$WIKI_PATH"/entry
16    printf '%s' "---
17title: $entry
18subtitle:
19date: $(date +'%Y-%m-%d')
20template: page.html
21---" > "$WIKI_PATH"/entry/_index.md
22
23}
24
25generate_index() {
26    mapfile -d $'\0' entries < <(find "$WIKI_PATH" ! -path "$WIKI_PATH" -print0)
27    prevdir=''
28    for r in "${entries[@]}"; do
29        path="$(basename "$r")"
30        [ "$path" != "_index.md" ] && {
31            if [ -d "$r" ]; then
32                printf '%s\n' "- [$path](/wiki/$path)"
33                prevdir="$path"
34            elif [ "$(basename "$(dirname "$r")")" == "$prevdir" ]; then
35                noext="$(noext "$path")"
36                printf '  %s\n' "- [$noext](/wiki/$prevdir/$noext)"
37            else
38                noext="$(noext "$path")"
39                printf '%s\n' "- [$noext](/wiki/$noext)"
40            fi
41        }
42    done
43}
44
45link() {
46    # FIXME: this needs to be reworked
47    # post A, and post B
48    a="$(noext "$1")"
49    a="${a#"$WIKI_PATH"}"
50    b="$(noext "$2")"
51    b="${a#"$WIKI_PATH"}"
52
53    printf '%s' "- [$a](/wiki/$a)" >> "$2"
54    printf '%s' "- [$b](/wiki/$b)" >> "$1"
55}
56
57if [ "$#" -eq 0 ]; then
58    printf '%s' "---
59title: Wiki
60subtitle: Ideas, beliefs and thoughts.
61date: $(date +'%Y-%m-%d')
62template: page.html
63---
64
65" > "$ROOT_INDEX_MD"
66    generate_index >> "$ROOT_INDEX_MD"
67else
68    case "$1" in
69        "topic")
70            shift
71            topic "$1"
72            ;;
73    esac
74fi
75
76exit 0