diff options
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" + |
