summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLouie S <louie@example.com>2023-05-28 17:52:08 -0700
committerLouie S <louie@example.com>2023-05-28 17:52:08 -0700
commitae168236bbc1d5be63f607e872216a1b6d6ac3e5 (patch)
tree4e8af8141d916c86482e2cd042338815ce34a1ef
parent6dd93704a3218a26d10a4268f73c919eea3f22c8 (diff)
GNU Automake (now with more indexing)
-rw-r--r--.gitignore2
-rw-r--r--Makefile15
-rw-r--r--README (renamed from README.template)8
-rw-r--r--README.md33
-rw-r--r--src/Info.plist6
-rw-r--r--src/icon.pngbin0 -> 1617 bytes
-rwxr-xr-xsrc/index-page.sh (renamed from src/index.sh)0
-rwxr-xr-xsrc/index-terms.sh33
-rw-r--r--src/lib/insert2
9 files changed, 52 insertions, 47 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..0f203a5
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+tmp
+GNU_Automake.docset
diff --git a/Makefile b/Makefile
index 9339745..3e45c93 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-#DOCSET_NAME = ...
+DOCSET_NAME = GNU_Automake
DOCSET_DIR = $(DOCSET_NAME).docset
CONTENTS_DIR = $(DOCSET_DIR)/Contents
@@ -10,10 +10,10 @@ INDEX_FILE = $(RESOURCES_DIR)/docSet.dsidx
ICON_FILE = $(DOCSET_DIR)/icon.png
ARCHIVE_FILE = $(DOCSET_NAME).tgz
-#SRC_ICON = src/icon.png
+SRC_ICON = src/icon.png
-#MANUAL_URL = ...
-#MANUAL_FILE = tmp/...
+MANUAL_URL = https://www.gnu.org/software/automake/manual/automake.html_node.tar.gz
+MANUAL_FILE = tmp/automake.html_node.tar.gz
ERROR_DOCSET_NAME = $(error DOCSET_NAME is unset)
WARNING_MANUAL_URL = $(warning MANUAL_URL is unset)
@@ -71,9 +71,12 @@ $(DOCUMENTS_DIR): $(RESOURCES_DIR) $(MANUAL_FILE)
$(INFO_PLIST_FILE): src/Info.plist $(CONTENTS_DIR)
cp src/Info.plist $@
-$(INDEX_FILE): src/index.sh $(DOCUMENTS_DIR)
+$(INDEX_FILE): src/index-page.sh src/index-terms.sh $(DOCUMENTS_DIR)
rm -f $@
- src/index.sh $@ $(DOCUMENTS_DIR)/*.html
+ src/index-page.sh $@ $(DOCUMENTS_DIR)/*.html
+ src/index-terms.sh "Macro" $@ $(DOCUMENTS_DIR)/Macro-Index.html
+ src/index-terms.sh "Variable" $@ $(DOCUMENTS_DIR)/Variable-Index.html
+ src/index-terms.sh "Entry" $@ $(DOCUMENTS_DIR)/General-Index.html
$(ICON_FILE): src/icon.png $(DOCSET_DIR)
cp $(SRC_ICON) $@
diff --git a/README.template b/README
index 6fa12d5..7f7ca1c 100644
--- a/README.template
+++ b/README
@@ -1,12 +1,12 @@
-Here is a script and a Makefile for generating a <NAME> docset for Dash. The script is based on the dash-docset-generation-template
+Here is a script and a Makefile for generating a GNU Automake docset for Dash. The script is based on the dash-docset-generation-template
-- <NAME>: <UPSTREAM LINK>
+- GNU Automake: https://www.gnu.org/software/automake/
- Dash: https://kapeli.com/dash
- dash-docset-generation-template: https://github.com/lshprung/dash-docset-generation-template
-To generate a docset from the latest edition of the <NAME> Manual, simply
+To generate a docset from the latest edition of the GNU Automake Manual, simply
execute `make` from the same directory as this README file. The latest edition
-will be downloaded from <UPSTREAM HOST> and packaged appropriately.
+will be downloaded from www.gnu.org and packaged appropriately.
Requirements:
diff --git a/README.md b/README.md
deleted file mode 100644
index 7fb5e46..0000000
--- a/README.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# Dash Docset Template
-
-This is a repository providing a template to package a Dash docset from HTML source documentation. Files that need to be manually configured are listed below. Additional fine tuning is also recommended, depending on the quirks of the documentation being packaged. An example docset packaging script for GNU Make using this template can be seen [here](https://github.com/lshprung/gnu-make-dash-docset)
-
-### `README.template`
-
-This file will provide a README for the packaging script. Replace `<NAME>`, `<UPSTREAM LINK>`, and `<UPSTREAM HOST>` with appropriate values.
-
-### `Makefile`
-
-This file will build the docset.
-
-- `DOCSET_NAME` must be set
-- `MANUAL_FILE` must be set
- - If the script should download documentation from the internet, `MANUAL_URL` must also be set. If not, ensure a `.tgz` archive of the HTML documentation exists at `tmp/MANUAL.tgz` (where MANUAL is the name of the archive)
-
-### `src/icon.png`
-
-If you want to associate an icon with the docset, it should be saved to `src/icon.png`.
-
-### `src/index.sh`
-
-This is the main script that builds the docset index. This script does not require any manual modifications, but you will probably want to make additions/changes to improve the quality of your docset and accomodate any quirks.
-
-### `src/Info.plist`
-
-This file contains metadata for the docset. Replace `<!-- VALUE -->` with appropriate values. It may be useful to refer to the `Info.plist` file of an existing docset for reference.
-
----
-
-### Credits
-
-Created by [lshprung](https://github.com/lshprung), and originally based on [benzado](https://github.com/benzado)'s [gnu-make-dash-docset](https://github.com/benzado/gnu-make-dash-docset).
diff --git a/src/Info.plist b/src/Info.plist
index 111baae..f94b2c9 100644
--- a/src/Info.plist
+++ b/src/Info.plist
@@ -3,11 +3,11 @@
<plist version="1.0">
<dict>
<key>CFBundleIdentifier</key>
- <string><!-- VALUE --></string>
+ <string>gnuautomake</string>
<key>CFBundleName</key>
- <string><!-- VALUE --></string>
+ <string>GNU Automake</string>
<key>DocSetPlatformFamily</key>
- <string><!-- VALUE --></string>
+ <string>automake</string>
<key>isDashDocset</key>
<true/>
</dict>
diff --git a/src/icon.png b/src/icon.png
new file mode 100644
index 0000000..9b18522
--- /dev/null
+++ b/src/icon.png
Binary files differ
diff --git a/src/index.sh b/src/index-page.sh
index 0b6e693..0b6e693 100755
--- a/src/index.sh
+++ b/src/index-page.sh
diff --git a/src/index-terms.sh b/src/index-terms.sh
new file mode 100755
index 0000000..f74af03
--- /dev/null
+++ b/src/index-terms.sh
@@ -0,0 +1,33 @@
+#!/usr/bin/env sh
+
+# shellcheck source=./lib/create_table
+. "$(dirname "$0")"/lib/create_table
+# shellcheck source=./lib/insert
+. "$(dirname "$0")"/lib/insert
+
+TYPE="$1"
+shift
+DB_PATH="$1"
+shift
+
+insert_index_terms() {
+ # Get each term from an index page and insert
+ while [ -n "$1" ]; do
+ grep -Eo "<a href.*</a>:" "$1" | while read -r line; do
+ insert_term "$line"
+ done
+
+ shift
+ done
+}
+
+insert_term() {
+ LINK="$1"
+ NAME="$(echo "$LINK" | pup -p 'a text{}' | sed 's/\"\"//g' | tr -d \\n)"
+ PAGE_PATH="$(echo "$LINK" | pup -p 'a attr{href}')"
+
+ insert "$DB_PATH" "$NAME" "$TYPE" "$PAGE_PATH"
+}
+
+create_table "$DB_PATH"
+insert_index_terms "$@"
diff --git a/src/lib/insert b/src/lib/insert
index baa13bd..31c1b4c 100644
--- a/src/lib/insert
+++ b/src/lib/insert
@@ -4,5 +4,5 @@ insert() {
TYPE="$3"
PAGE_PATH="$4"
- sqlite3 "$DB_PATH" "INSERT INTO searchIndex(name, type, path) VALUES (\"$NAME\",\"$TYPE\",\"libc/$PAGE_PATH\");"
+ sqlite3 "$DB_PATH" "INSERT INTO searchIndex(name, type, path) VALUES (\"$NAME\",\"$TYPE\",\"$PAGE_PATH\");"
}