diff options
| author | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-26 16:38:00 -0400 |
|---|---|---|
| committer | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-26 16:38:00 -0400 |
| commit | 97d5c458cfa039d857301e1ca7d5af3beb37131d (patch) | |
| tree | b460cd850d0537eb71806ba30358840377b27688 /build-db | |
| parent | b89dc2331a50c63f8b33272a5c4c61ab98abdaa3 (diff) | |
build: Better Build System
Diffstat (limited to 'build-db')
| -rwxr-xr-x | build-db | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/build-db b/build-db new file mode 100755 index 00000000..53418213 --- /dev/null +++ b/build-db @@ -0,0 +1,60 @@ +#!/usr/bin/env bash + +usage() { + printf "Usage: build-db db-file sql-file dir [dirs...]\n" >&2 +} + +create_entry() { + FILE="$1" + SUBDIR="$2" + + 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" +} + +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 + +for SUBDIR in ${SUBDIRS[*]}; +do + FILES=$(find "$SUBDIR" -type f -name "*.html") + + for FILE in ${FILES[*]}; + do + create_entry "$FILE" "$SUBDIR" >> "$SQL_FILE" + done +done + +sqlite3 "$DB_FILE" < "$SQL_FILE" +chmod 400 "$DB_FILE" +rm "$SQL_FILE" + |
