summaryrefslogtreecommitdiff
path: root/build-db
blob: 0545eafeaf01d8b9929e95b3281fa65658a24b1a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#!/usr/bin/env bash

usage() {
    printf "Usage: build-db db-file sql-file dir [dirs...]\n" >&2
}

create_entry() {
    FILE="$1"
    SUBDIR="$2"
    SQL_FILE="$3"

    SECTION=$(basename "$FILE" | sed -E 's|.*\.([0-9])\..*|\1|')
    NAME=$(basename "$FILE" | sed -E 's|(.*)\.[0-9]\.html|\1|')
    OS=$(basename "$SUBDIR")

    if [[ -n "$(echo "$FILE" | grep "man$SECTION\.")" ]];
    then
        NAME="$(echo "$FILE" | sed -E "s|.*man$SECTION\.(.*)/.*|\1|" ).$NAME"
    fi

    STATEMENT="INSERT INTO manpages (os, name, section, path) VALUES ('"$OS"', '"$NAME"', '"$SECTION"', '"$FILE"');"
    printf "%s\n" "$STATEMENT" >> "$SQL_FILE"
}

if [[ $# -lt 3 ]];
then
    usage
    exit 1
fi

DB_FILE="$1"
SQL_FILE="$2"
shift 2
SUBDIRS=$@

rm -f "$DB_FILE"

cat <<EOF > "$SQL_FILE"
CREATE TABLE manpages (
    os TEXT,
    name TEXT,
    section TEXT,
    path TEXT,
    PRIMARY KEY (os, name, section)
);
EOF

cat <<EOF >> "$SQL_FILE"
CREATE TABLE sections (
    os TEXT,
    section TEXT,
    description TEXT,
    PRIMARY KEY (os, section)
);
EOF

printf '{ "AllowedFiles" : [\n' > Allowed.json

for SUBDIR in ${SUBDIRS[*]};
do
    awk -F '\t' -v OS="$SUBDIR" \
        '{print "INSERT INTO sections (os, section, description) VALUES (\"OS\", \"$1\", \"$2\");"}' >> "$SQL_FILE"

    FILES=$(find "$SUBDIR" -type f -regex "$SUBDIR/man[0-9]/.*\.[0-9]\.html")

    for FILE in ${FILES[*]};
    do
        create_entry "$FILE" "$SUBDIR" "$SQL_FILE"
        printf '"%s",\n' "$FILE" >> Allowed.json
    done
done

printf '"static/htmx.min.js", "static/css/main.css", "static/index.html",' >> Allowed.json
printf '"static/logos/favicon.png", "static/logos/favicon.svg", "static/logos/favicon16.png",' >> Allowed.json
printf '"static/logos/favicon32.png", "static/logos/FirstInitialLogo.svg", "static/logos/FullNameLogo.svg"]}' >> Allowed.json

sqlite3 "$DB_FILE" < "$SQL_FILE"
chmod 400 "$DB_FILE"
rm "$SQL_FILE"