aboutsummaryrefslogtreecommitdiff
path: root/v2/src/bin
diff options
context:
space:
mode:
Diffstat (limited to 'v2/src/bin')
-rwxr-xr-xv2/src/bin/absolute4
-rwxr-xr-xv2/src/bin/extract133
-rwxr-xr-xv2/src/bin/makemake137
-rwxr-xr-xv2/src/bin/url-for10
4 files changed, 145 insertions, 139 deletions
diff --git a/v2/src/bin/absolute b/v2/src/bin/absolute
index ae25b43..6434219 100755
--- a/v2/src/bin/absolute
+++ b/v2/src/bin/absolute
@@ -62,6 +62,6 @@ done
shift $((OPTIND - 1))
-. src/development/config.env
+. src/lib/base-conf
-printf 'https://%s%s' "$FQDN" "$(cat)"
+printf 'https://%s%s' "$domain" "$(cat)"
diff --git a/v2/src/bin/extract b/v2/src/bin/extract
deleted file mode 100755
index 7bbcba7..0000000
--- a/v2/src/bin/extract
+++ /dev/null
@@ -1,133 +0,0 @@
-#!/bin/sh
-set -eu
-
-
-usage() {
- cat <<-'EOF'
- Usage:
- extract -t TYPE FILENAME
- extract -h
- EOF
-}
-
-help() {
- cat <<-'EOF'
-
- Options:
- -t TYPE the type of extraction to perform ("content" or "env")
- -h, --help show this message
-
- FILENAME the name of the input file, also to be used as
- URL.
-
-
- Separate the content from the "frontmatter", and emit the
- selected one, given the FILENAME.
-
-
- Examples:
-
- Get the content:
-
- $ extract -t content src/file.md > src/file.entry-content
-
-
- Get the "frontmatter":
-
- $ extract -t env src/f.md > src/f.entry-env
- EOF
-}
-
-
-for flag in "$@"; do
- case "$flag" in
- --)
- break
- ;;
- --help)
- usage
- help
- exit
- ;;
- *)
- ;;
- esac
-done
-
-TYPE=''
-while getopts 't:h' flag; do
- case "$flag" in
- t)
- TYPE="$OPTARG"
- ;;
- h)
- usage
- help
- exit
- ;;
- *)
- usage >&2
- exit 2
- ;;
- esac
-done
-shift $((OPTIND - 1))
-
-
-FILENAME="${1:-}"
-eval "$(assert-arg "$FILENAME" 'FILENAME')"
-eval "$(assert-arg "$TYPE" '-t TYPE')"
-
-
-case "$TYPE" in
- content)
- . "${FILENAME%.md}.entry-env"
- printf '%s\n' "$PREAMBLE"
- awk '
- separator >= 2
- /^---$/ { separator++ }
- ' "$FILENAME"
- ;;
- env)
- cat src/development/config.env
- awk '
- /^---$/ {
- if (++separator > 1) {
- exit
- } else {
- next
- }
- }
-
- { print }
- ' "$FILENAME"
- printf "FILENAME='%s'\n" "$FILENAME"
- cat <<-'REAL_EOF'
- TITLE="${TITLE:-$SITE_NAME}"
-
- URI_TITLE="$(printf '%s' "$TITLE" | uri)"
-
- URL="$(
- printf '%s' "$FILENAME" |
- sed \
- -e 's|^src/content/||' \
- -e 's|md$|html|'
- )"
-
- PREAMBLE="$(cat <<EOF
- # $TITLE
-
- <p class="timestamp">
- Posted on <time datetime="$DATE">$(LANG="$LANGUAGE" date -d "$DATE" "$DATE_FMT")</time>
- </p>
- EOF
- )"
- REAL_EOF
- ;;
- *)
- printf 'Bad value for TYPE: "%s".\n\n' \
- "$TYPE" >&2
- usage >&2
- exit 2
- ;;
-esac
diff --git a/v2/src/bin/makemake b/v2/src/bin/makemake
new file mode 100755
index 0000000..f4ab87a
--- /dev/null
+++ b/v2/src/bin/makemake
@@ -0,0 +1,137 @@
+#!/bin/sh
+set -eu
+
+
+usage() {
+ cat <<-'EOF'
+ Usage:
+ makemake
+ makemake -h
+ EOF
+}
+
+help() {
+ cat <<-'EOF'
+
+ Options:
+ -h, --help show this message
+
+
+ Generate make(1) code for later evaluation by make(1). What
+ this scripts does is fill the gap where make(1) can't handle
+ globs and dynamic dependencies, and uses some ad-hoc scripts
+ to generate those.
+ EOF
+}
+
+for flag in "$@"; do
+ case "$flag" in
+ --)
+ break
+ ;;
+ --help)
+ usage
+ help
+ exit
+ ;;
+ *)
+ ;;
+ esac
+done
+
+while getopts 'h' flag; do
+ case "$flag" in
+ h)
+ usage
+ help
+ exit
+ ;;
+ *)
+ usage >&2
+ exit 2
+ ;;
+ esac
+done
+shift $((OPTIND - 1))
+
+
+
+varlist() {
+ printf '%s = \\\n' "$1"
+ sed \
+ -e 's/^/ /' \
+ -e 's/$/ \\/'
+ printf '\n'
+}
+
+html_deps() {
+ "$@" | sed 's/^\(.*\)\.md$/\1.conf \1.content: \1.md/'
+ "$@" | sed 's/^\(.*\)\.md$/\1.html: \1.conf \1.content/'
+ printf '\n'
+}
+
+
+content_mds() {
+ find src/content/"$1"/ -type f -name '*.md'
+}
+
+RESOURCES='
+pastebins
+tils
+'
+
+EXTENSIONS='
+.md
+.conf
+.content
+.prehtml
+.posthtml
+.html
+'
+
+for r in $RESOURCES; do
+ content_mds "$r" | varlist "$r".md
+ for e in $EXTENSIONS; do
+ if [ "$e" = '.md' ]; then
+ continue
+ fi
+ printf '%s%s = $(%s.md:.md=%s)\n' "$r" "$e" "$r" "$e"
+ done
+ printf '%s =' "$r"
+ for e in $EXTENSIONS; do
+ if [ "$e" = '.md' ]; then
+ continue
+ fi
+ printf ' $(%s%s)' "$r" "$e"
+ done
+ printf '\n'
+ html_deps content_mds "$r"
+ printf '\n'
+done
+
+all_resources() {
+ echo $RESOURCES | tr ' ' '\n'
+}
+
+all_vars() {
+ EXT="$1"
+ all_resources |
+ sed 's|^|$(|' |
+ sed "s|$|$EXT)|" |
+ varlist all-generated"$EXT"
+}
+
+for e in $EXTENSIONS; do
+ all_vars "$e"
+done
+all_vars ''
+
+
+git ls-files |
+ grep -v '^src/content/' |
+ varlist 'non-content'
+
+git ls-files src/content/ |
+ grep -v '\.md$' |
+ grep -Ev "src/content/($(all_resources | paste -sd'|'))/" |
+ varlist 'static-content'
diff --git a/v2/src/bin/url-for b/v2/src/bin/url-for
index 025a546..c31ff84 100755
--- a/v2/src/bin/url-for
+++ b/v2/src/bin/url-for
@@ -1,7 +1,6 @@
#!/bin/sh
set -eu
-
usage() {
cat <<-'EOF'
Usage:
@@ -69,9 +68,12 @@ while getopts 'h' flag; do
done
shift $((OPTIND - 1))
+. src/development/lib.sh
+
+
FILE="${1:-}"
-eval "$(assert-arg "$FILE" 'FILE')"
+eval "$(assert_arg "$FILE" 'FILE')"
-. src/development/config.env
+. src/lib/base-conf
-printf '%s/%s' "$BASE_URL" "$FILE"
+printf '%s%s' "${base_url:-/}" "$FILE"