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
|
#!/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 INTEGER,
path TEXT,
PRIMARY KEY (os, name, section)
);
EOF
printf '{ "AllowedFiles" : [\n' > Allowed.json
for SUBDIR in ${SUBDIRS[*]};
do
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"
|