summaryrefslogtreecommitdiff
path: root/build-db
diff options
context:
space:
mode:
Diffstat (limited to 'build-db')
-rwxr-xr-xbuild-db60
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"
+