summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordavidovski <david@davidovski.xyz>2023-07-21 11:47:56 +0200
committerdavidovski <david@davidovski.xyz>2023-07-21 11:47:56 +0200
commitba97d2402bcf396c7fc70ae7fc3877117a48a38e (patch)
tree386028c8aedd1c46c94ca6c0db248a2fb8a82894
parent2722747c090f51e12d83ba31c0f53ae34599c09c (diff)
added readme
-rw-r--r--README.md40
-rwxr-xr-xsrc/shblg.sh12
2 files changed, 48 insertions, 4 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..769f0bc
--- /dev/null
+++ b/README.md
@@ -0,0 +1,40 @@
+# shblg
+
+a static site generator written (entirely) in posix shell
+
+this repository contains two parts: md2html and shblg
+
+## md2html
+
+md2html provides a simple and lightweight way to render a markdown file into html
+
+most standard markdown syntax works
+
+### usage
+
+when using standalone:
+
+ md2html file.md > output.html
+
+when using with shblg, prepend a shebang to your markdown file:
+
+ #!/usr/bin/env md2html
+
+## shblg
+
+shblg is a static site generator that generates a site using a directory full of executable files
+
+shblg recurses through this directory and executes files, sending their stdout to the rendered directory
+
+the intended use is to use various interpreters for input pages to generate an output, for example `md2html` can be added through a shebang to allow the input markdown to be *"executed"* to output html.
+
+shblg will ignore any files that are not executable and instead copy them directly, so ensure that any input files that need to be executed have the `+x` mode
+
+shblg does not make any changes to the source filenames when generating its output, so ensure that you keep file extensions to match the output file's format
+
+### example usage
+
+for example, if you would like to use shblg to generate the site in `example/` and save the output in `html/`
+
+ shblg -i example/ html/
+
diff --git a/src/shblg.sh b/src/shblg.sh
index af98ef5..8637bcd 100755
--- a/src/shblg.sh
+++ b/src/shblg.sh
@@ -2,9 +2,13 @@
INPUT_DIR=blog
OUTPUT_DIR=dist
-PAGE_TEMPLATE=blog/template.html
-while getopts ":o:i:t:" opt; do
+usage () {
+ printf "%s\n" "Usage: shblg [-i input_dir] [-o output_dir]"
+ exit 1
+}
+
+while getopts ":o:i:h" opt; do
case "$opt" in
o)
OUTPUT_DIR=$OPTARG/
@@ -14,8 +18,8 @@ while getopts ":o:i:t:" opt; do
i)
INPUT_DIR=$(realpath $OPTARG)
;;
- t)
- PAGE_TEMPLATE=$(realpath $OPTARG)
+ h)
+ usage
;;
esac
done