diff -urP mkws/4.0.16/mkws/Makefile mkws/4.0.17/mkws/Makefile
--- mkws/4.0.16/mkws/Makefile Wed Jan 26 00:29:04 2022
+++ mkws/4.0.17/mkws/Makefile Mon Sep 26 18:15:46 2022
@@ -1,6 +1,3 @@
-CC = cc
-LD = ${CC}
-
PREFIX = /usr/local
MANPREFIX = ${PREFIX}/share/man
diff -urP mkws/4.0.16/mkws/NEWS mkws/4.0.17/mkws/NEWS
--- mkws/4.0.16/mkws/NEWS Thu Jan 1 02:00:00 1970
+++ mkws/4.0.17/mkws/NEWS Mon Sep 26 18:15:46 2022
@@ -0,0 +1,276 @@
+# Changelog
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [4.0.17]
+### Added
+- `NEWS`
+
+### Changed
+- `README' covers standalone `mkws` script usage
+- Quote substitutions in `mkws`
+
+## [4.0.16]
+### Removed
+- macOS instructions in [`README`](https://v.mkws.sh/mkws/4.0.15..4.0.16#README)
+
+## [4.0.15]
+### Added
+- Howtos to [`README`](https://v.mkws.sh/mkws/4.0.14..4.0.15#README)
+
+### Changed
+- Typos in "File Hierarchy" of [`README`](https://v.mkws.sh/mkws/4.0.14..4.0.15#README)
+- Archive name in [`README`](https://v.mkws.sh/mkws.sh/4.0.14..4.0.15#README)
+
+## [4.0.14]
+### Added
+- macOS instructions in `README`
+### Changed
+- `README` description to a single line
+- "File Hierarchy" position lower in `README`
+- Archive name in `README`
+
+## [4.0.13]
+### Added
+- `initial-scale` content to `viewport` `meta` in `README` examples
+
+### Changed
+- Archive name in `README`
+
+## [4.0.12]
+### Changed
+- Archive name in `README`
+
+### Removed
+- Web site compressed files
+
+## [4.0.11]
+### Added
+-
+
+### Changed
+- Description in `README`
+- Archive name in `README`
+- `srcdir` and `sharedir` variables in `mkws` to `src` and `share` and `export` them
+
+### Removed
+- `robots.txt` reference in `mkws.1`
+
+## [4.0.10]
+### Changed
+- Archive name in `README`
+
+### Removed
+- `HOWTO`
+
+## [4.0.9]
+### Added
+- `HOWTO` back
+
+## [4.0.8]
+### Added
+- Missing ` to tree in "File Hierarchy" section in`README`
+- "Templates" section to `README`
+- Customization instructions at the end of the "File Hierachy" section in `README`
+
+### Changed
+- Archive name in `README`
+
+### Removed
+- `HOWTO`
+
+## [4.0.7]
+### Added
+-
+
+### Changed
+- Archive name in `README`
+
+### Removed
+- `man` section from project name in `HOWTO
+
+## [4.0.6]
+### Added
+- Description to `README`
+- "File Hierarchy" section to `README`
+- "Generate the Static Site" section to `README`
+
+### Changed
+- Copyright year and email address in `LICENSE`
+- Requirements section in `README`
+- Installation section in `README`
+- Archive name in `README`
+- "Important!" section to "Note" and reword it
+- Escape newline characters in `mkws` messages
+
+### Removed
+- `man` section from project name in `README`
+
+## [4.0.5]
+### Changed
+- Archive name in `README`
+
+## [4.0.4]
+### Removed
+- empty new lines in examples for "How To Add Custom Titles (or `meta` tags) For Each Page"
+in `HOWTO`
+
+
+## [4.0.3]
+### Changed
+- Switch to singular urls in `HOWTO` examples
+- Archive name in `README`
+
+## [4.0.2]
+### Changed
+- Archive name in `README`
+
+### Removed
+- Extra \*\* at end of quoting instructions in `README`
+
+## [4.0.1]
+### Added
+- Quoting instructions `README`
+
+### Changed
+- Archive name in `README`
+
+### Removed
+- `robots.txt` references in `mkws.1`
+
+## [4.0.0]
+### Changed
+- Archive name in `README`
+
+### Removed
+- Generating `robots.txt` in `mkws` script
+
+## [3.0.8]
+### Added
+- Generating `robots.txt` in `mkws` script
+
+### Changed
+- Correct archive name in `README`
+
+## [3.0.3]
+### Changed
+- Archive name in `README`
+
+### Removed
+- Generating `robots.txt` in `mkws` script
+
+## [3.0.2]
+### Changed
+- Archive name in `README`
+
+## [3.0.0]
+### Changed
+- Archive name in `README`
+- Link to absolute path to `pp` in `README`
+- Use `s.uppcss` as `CSS` file instead of `theme.uppcss` in `mkws` script
+
+## [2.0.8]
+### Changed
+- Archive name in `README`
+
+## [2.0.7]
+### Added
+- `-e` flag to `/bin/sh` shebang in `mkws` script
+
+### Changed
+- Archive name in `README`
+
+### Removed
+- Trailing slash in `HOWTO` `mkws` web site url
+
+## [1.0.7]
+### Changed
+- Archive name in `README`
+
+## [1.0.6]
+### Changed
+- Archive name in `README`
+
+## [1.0.5]
+### Changed
+- `https` links to web site in `README`
+
+## [1.0.4]
+### Changed
+- Archive name in `README`
+
+## [1.0.3]
+### Added
+-
+
+### Changed
+-
+
+### Removed
+-
+
+## [1.0.2]
+### Added
+- `HOWTO`
+- "How To Add a Navigation Menu" to `HOWTO`
+- "How To Add Custom Titles" to `HOWTO`
+- "How To Render `Markdown`" to `HOWTO`
+
+## [1.0.1]
+### Added
+- Variable quotes in `mkws`
+
+### Changed
+- `LICENSE` copyright year
+- Simplify link to Linux in `README`
+- Properly link to WSL in `README`
+- Specify instructions apply to Linux in `README`
+- Specify Linux download link by default in `README`
+- Rename `shareddir` variable in `mkws`
+- Bump version in `README`
+
+### Removed
+- Nav menu instructions in `README`
+
+## [1.0]
+### Added
+- `Makefile`
+- `mkws`
+- `mkws.1`
+- `LICENSE`
+- `README`
+
+[4.0.17]: https://v.mkws.sh/mkws/4.0.16..4.0.17
+[4.0.16]: https://v.mkws.sh/mkws/4.0.15..4.0.16
+[4.0.15]: https://v.mkws.sh/mkws/4.0.14..4.0.15
+[4.0.14]: https://v.mkws.sh/mkws/4.0.13..4.0.14
+[4.0.13]: https://v.mkws.sh/mkws/4.0.12..4.0.13
+[4.0.12]: https://v.mkws.sh/mkws/4.0.11..4.0.12
+[4.0.11]: https://v.mkws.sh/mkws/4.0.10..4.0.11
+[4.0.10]: https://v.mkws.sh/mkws/4.0.9..4.0.10
+[4.0.9]: https://v.mkws.sh/mkws/4.0.8..4.0.9
+[4.0.8]: https://v.mkws.sh/mkws/4.0.7..4.0.8
+[4.0.7]: https://v.mkws.sh/mkws/4.0.6..4.0.7
+[4.0.6]: https://v.mkws.sh/mkws/4.0.5..4.0.6
+[4.0.5]: https://v.mkws.sh/mkws/4.0.4..4.0.5
+[4.0.4]: https://v.mkws.sh/mkws/4.0.3..4.0.4
+[4.0.3]: https://v.mkws.sh/mkws/4.0.2..4.0.3
+[4.0.2]: https://v.mkws.sh/mkws/4.0.1..4.0.2
+[4.0.1]: https://v.mkws.sh/mkws/4.0.0..4.0.1
+[4.0.0]: https://v.mkws.sh/mkws/3.0.8..4.0.0
+[3.0.8]: https://v.mkws.sh/mkws/3.0.3..3.0.8
+[3.0.3]: https://v.mkws.sh/mkws/3.0.2..3.0.3
+[3.0.2]: https://v.mkws.sh/mkws/3.0.0..3.0.2
+[3.0.0]: https://v.mkws.sh/mkws/2.0.8..3.0.0
+[2.0.8]: https://v.mkws.sh/mkws/2.0.7..2.0.8
+[2.0.7]: https://v.mkws.sh/mkws/1.0.7..2.0.7
+[1.0.7]: https://v.mkws.sh/mkws/1.0.6..1.0.7
+[1.0.6]: https://v.mkws.sh/mkws/1.0.5..1.0.6
+[1.0.5]: https://v.mkws.sh/mkws/1.0.4..1.0.5
+[1.0.4]: https://v.mkws.sh/mkws/1.0.3..1.0.4
+[1.0.3]: https://v.mkws.sh/mkws/1.0.2..1.0.3
+[1.0.2]: https://v.mkws.sh/mkws/1.0.1..1.0.2
+[1.0.1]: https://v.mkws.sh/mkws/1.0..1.0.1
+[1.0]: https://v.mkws.sh/mkws/1.0
diff -urP mkws/4.0.16/mkws/README mkws/4.0.17/mkws/README
--- mkws/4.0.16/mkws/README Wed Jan 26 00:29:04 2022
+++ mkws/4.0.17/mkws/README Mon Sep 26 18:15:46 2022
@@ -1,29 +1,40 @@
# `mkws`
-A simple static site generator using `sh` as a templating language.
+A simple static site generator using `sh` as a templating language
## Requirements
-We provide binaries for [Linux](https://mkws.sh/mkws@4.0.16.tgz) and
-[OpenBSD](mkws-openbsd@4.0.16.tgz). It can also run on
-[Windows](https://www.microsoft.com/windows) via the
-[Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/install-win10) for other UNIX like operating systems, you can build from
+We provide binaries for [Linux](//mkws.sh/mkws.tgz) and
+[OpenBSD](//mkws-openbsd.tgz). It can also run on
+[Windows](//www.microsoft.com/windows) via the
+[Windows Subsystem for Linux](//docs.microsoft.com/en-us/windows/wsl/install-win10) for other UNIX like operating systems, you can build from
sources.
## Install `mkws`
-On a Linux machine, just download the archive from
-[https://mkws.sh/mkws@4.0.16.tgz](https://mkws.sh/mkws@4.0.16.tgz) or in
-the terminal, assuming `curl` is installed, type:
+### Dependecies
- curl -so - https://mkws.sh/mkws@4.0.16.tgz | tar -xzvf -
+`mkws` depends on [pp](//mkws.sh/pp.html) and [lts](//mkws.sh/lts.html).
+You'll have to install those first before running `mkws`.
+On a Linux or BSD machine, in a terminal, download the sources from [//mkws.sh/mkws/mkws@4.0.17.tgz] and install the program:
+
+ mkdir -p ~/src/mkws.sh
+ cd ~/src/mkws.sh
+ curl -s //mkws.sh/mkws/mkws@4.0.17.tgz | tar -xzvf -
+ cd mkws
+ make install PREFIX=$HOME
## Generate the Static Site
-Rename the directory you unarchived earlier to your site's name:
+Create a new directory for your static web site
- mv ws.sh example.com && cd example.com
+ mkdir ~/src/example.com
+ cd ~/src/example.com
+Download a theme, we'll use the base theme in or example:
+
+ curl -s //t.mkws.sh/base/base@3.1.0.tgz | tar -xzvf -
+
Create your first template named `index.upphtml`, this is required by
`mkws`:
@@ -37,7 +48,7 @@
Run `mkws`:
- ./bin/mkws https://example.com
+ mkws //example.com
You just generated your first static site with `mkws`. You will now
have an `index.html` file in your `.` root directory containing the
@@ -76,14 +87,14 @@
For further customizations you can always modify your
`./bin/mkws` or `./share/l.upphtml` files, in
-fact, it's recommended.</p>
+fact, it's recommended.
## Templates
`mkws` uses `*.upphtml` files as templates which are processed via
-[`pp`](https://mkws.sh/pp.html), a preprocessor that allows embedding
+[`pp`](//mkws.sh/pp.html), a preprocessor that allows embedding
[`sh`](
-https://pubs.opengroup.org/onlinepubs/9699919799/utilities/sh.html)
+//pubs.opengroup.org/onlinepubs/9699919799/utilities/sh.html)
code in files of any type by nesting it inside the `#!\n` token, where
`\n` is a new line.
@@ -129,9 +140,9 @@
## Note
-Because [`pp`](https://mkws.sh/pp.html) uses
+Because [`pp`](//mkws.sh/pp.html) uses
[`sh`](
-https://pubs.opengroup.org/onlinepubs/9699919799/utilities/sh.html)
+//pubs.opengroup.org/onlinepubs/9699919799/utilities/sh.html)
internally, double quotes (`"`) must be escaped in templates, so to get
an actual double quote (`"`) you have to write `\"`.
@@ -139,7 +150,7 @@
problem for `HTML` because [quoting attribute values is
optional and double quotes and single quotes are
interchangeable](
-https://html.spec.whatwg.org/multipage/syntax.html#attributes-2).
+//html.spec.whatwg.org/multipage/syntax.html#attributes-2).
We recommend not quoting attribute values and using single quotes (`'`)
in special cases.
@@ -172,10 +183,14 @@
Customization is done by editing the template (`*.upp*`) files in your
`mkws` project, the ones you create yourself in the `.` directory,
the themes files in `./share`, `./share/l.upphtml`, `./share/s.uppcss`
-and `./share/sitemap.uppxml`, and the main generating script in
-`./bin/mkws`. You can also install additional utilities in the `./bin`
-directory to enable new functionality.
+and `./share/sitemap.uppxml`. You can also install additional utilities in the `./bin`
+directory to enable new functionality. To customize the generation process, copy
+the `mkws` script to your web site's directory and edit in place.
+
+ mkdir -p ~/src/example.com/bin
+ cp ~/bin/mkws ~/src/example.com/bin
+
Below are a few solutions to common problems.
### How to output in a separate directory
@@ -183,17 +198,16 @@
A common practice static site generators use is to output the generated
files in a separate directory, like `out` or `public`. `mkws` is designed
to output its files in the current directory, along with the sources,
-it does hoewever have an option to specify to source path. So to
+it does however have an option to specify to source path. So to
output in a different directory than the sources one, you could do in
your `.` directory:
mkdir htdocs
cd htdocs
- ../bin/mkws https://example.com ../
+ ../bin/mkws //example.com ../
However, we do recommend distributing the `.upp*` files so other can
-people can read and learn from your code, like
-[https://mkws.sh](https://mkws.sh) does at the bottom of the page.
+people can read and learn from your code, and preferably link to them.
### How to preview your website
@@ -204,11 +218,20 @@
and preview your site. `mkws` doesn't include a server by default,
-you can use any server you prefer, however we do provide the sources to
-a small server in Go: [https.go](https://mkws.sh/https/https.go).
-To install, in your web site's directory, do:
+you can use any server you prefer, however we do provide a small
+server written in Go: [https.go](//mkws.sh/https/https.go).
+You can either compile the source or download a statically linked
+binary for Linux: [https](//mkws.sh/https/https).
+To install, in your web site's directory, on a Linux machine, in a
+terminal, do:
- curl -so https.go https://mkws.sh/https/https.go
+ curl -so bin/https //mkws.sh/https/https
+ chmod +x bin/https
+ ./bin/https
+
+If you prefer compiling the sources:
+
+ curl -so https.go //mkws.sh/https/https.go
go build -o bin/https https.go
./bin/https
@@ -216,7 +239,7 @@
preview your website.
The server runs on port `9000` by default and uses the current directory
-as its root directory. It outputs a log to `stdout` in [Common Log Format](https://en.wikipedia.org/wiki/Common_Log_Format).
+as its root directory. It outputs a log to `stdout` in [Common Log Format](//en.wikipedia.org/wiki/Common_Log_Format).
### How to live reload
@@ -226,10 +249,10 @@
Assuming you installed our web server following the previous
instructions, the recommended way to do this with `mkws` is to either
-install or compile [entr](https://eradman.com/entrproject/), get
-[live.js](https://livejs.com/), in your web site's directory, do:
+install or compile [entr](//eradman.com/entrproject/), get
+[live.js](//livejs.com/), in your web site's directory, do:
- curl -so l.js https://livejs.com/live.js
+ curl -so l.js //livejs.com/live.js
Edit `share/l.upphtml` by adding:
@@ -256,7 +279,7 @@
(
echo ./bin/mkws
find . -type f -name '*.upp*'
- ) | entr sh -c 'bin/mkws https://example.com'
+ ) | entr sh -c 'bin/mkws //example.com'
EOF
chmod +x bin/d
@@ -287,7 +310,7 @@
Then, regenerate your site using the `mkws` command:
- ./bin/mkws https://example.com
+ ./bin/mkws //example.com
### How to add custom titles (or `meta` tags) for each page
@@ -326,12 +349,12 @@
Then, regenerate your site using the `mkws` command:
- ./bin/mkws https://example.com
+ ./bin/mkws //example.com
### How to render `Markdown`
Rendering `Markdown` is not at hard at all. Our favorite CLI tool for
-rendering `Markdown` is [`smu`](https://github.com/Gottox/smu). You'll
+rendering `Markdown` is [`smu`](//github.com/Gottox/smu). You'll
have to download it and install it on your system either via source or
your operating systems's package manager. In order to use it, just add:
@@ -340,10 +363,10 @@
#!
to any of your `*.upphtml` files or create a new `*.upphtml` files
-containing just the above code. Other `Markdown` renderders include
-[cmark](https://github.com/commonmark/cmark),
-[lowdown](https://github.com/kristapsdz/lowdown)
-[Orc](https://github.com/Orc/discount).
+containing just the above code. Other `Markdown` renderers include
+[cmark](//github.com/commonmark/cmark),
+[lowdown](//github.com/kristapsdz/lowdown)
+[discount](//github.com/Orc/discount).
Future versions of `mkws` may allow rendering `Markdown` directly from
source, without creating an extra `*.upphtml` file.
@@ -374,14 +397,14 @@
Holds the static site generator's binaries, they're used to generate
the static site.
* `./bin/lmt`
- Small utility part of [`lts`](https://mkws.sh/lts.html) for
+ Small utility part of [`lts`](//mkws.sh/lts.html) for
printing a file's last modification time used to generate
timestamps.
* `./bin/mkws`
The _main_ script, the actual static site generator, when called
from the command line via `./bin/mkws <url>`, it scans the `.`
root directory for `*.upptml` files, `mkws`'s template files,
- preprocesses them via [`pp`](https://mkws.sh/pp.html) and
+ preprocesses them via [`pp`](//mkws.sh/pp.html) and
renders them inside the `share/l.upphtml` layout file outputing
an `HTML` file for each one. `index.upphtml` is transformed to
`index.html`, `docs.upphtml` is transformed to `docs.html`,
@@ -389,7 +412,7 @@
`share/s.uppcss` and the `sitemap.xml` file from
`share/sitemap.uppxml`.
* `./bin/pp`
- The [`pp`](https://mkws.sh/pp.html) preprocessor, it allows
+ The [`pp`](//mkws.sh/pp.html) preprocessor, it allows
nesting `sh` code in any text file. It it used by the _main_
`./bin/mkws` script to preprocess any `.upp*` file.
* `./share`
@@ -430,6 +453,6 @@
`man` pages
* `./share/s.uppcss`
`CSS` template. It's also processed via
- [`pp`](https://mkws.sh/pp.html) so it's scriptable via `sh` code.
+ [`pp`](//mkws.sh/pp.html) so it's scriptable via `sh` code.
* `./share/sitemap.uppxml`
`sitemap.xml` template.
diff -urP mkws/4.0.16/mkws/mkws mkws/4.0.17/mkws/mkws
--- mkws/4.0.16/mkws/mkws Wed Jan 26 00:29:04 2022
+++ mkws/4.0.17/mkws/mkws Mon Sep 26 18:15:46 2022
@@ -7,9 +7,9 @@
test $# -lt 1 && usage
-export src=${2:-.}
-export share=${MKWSTHEMEDIR:-"$src"/share}
-export LANG=${LANG:-en_US.UTF-8}
+export src="${2:-.}"
+export share="${MKWSTHEMEDIR:-$src/share}"
+export LANG="${LANG:-en_US.UTF-8}"
if ! test -f "$src"/index.upphtml
then