Kapow is a template processor that provides the following directives to support injecting file contents, command output, current date/time, elapsed time, etc in generated output.
It can be used in some different ways:
kapow [OPTIONS] path/to/file.ext
; optionally save the output via
redirection: kapow [OPTIONS] path/to/file.ext >output.ext
#!/usr/bin/env kapow
as the first line of a (Markdown) file,
make it "executable" via chmod +x file.ext
, then run via ./file.ext
(see
note #3 under [block directives]).
Use env's -S
option if passing options to kapow, for example:
#!/usr/bin/env -S kapow -w 60
.While kapow is designed around Markdown syntax, it can be used with any text format that works with its directives.
Directive | Description
---|---
!inc:path
| Include file contents; path is relative to its containing file
!run:command
| Run command and insert stdout
Notes:
./file.ext
.!run
directive fails, kapow prints the error and stops processing,
unless the user specifies the -k
option.Directive | Example | Description
---|---|---
`!elapsed`
| 0s | Processing time
`!now`
| 2023-07-06T08:54:53Z | Current date/time in UTC / RFC 3339
`!now:local`
| Thu 06 Jul 2023 04:54:53 EDT | Current date/time in local timezone
`!now:local:%A %H:%M`
| Thursday 04:54 | Current date/time in local timezone and custom format
`!now:MST7MDT`
| Thu 06 Jul 2023 02:54:53 MDT | Current date/time in custom timezone
`!now:MST7MDT:%A %H:%M`
| Thursday 02:54 | Current date/time in custom timezone and format
`!now:US/Hawaii`
| Wed 05 Jul 2023 22:54:53 HST | Current date/time in custom locale
`!now:US/Hawaii:%A %H:%M`
| Wednesday 22:54 | Current date/time in custom locale and format
`!now:UTC:%A %H:%M`
| Thursday 08:54 | Current date/time in UTC and custom format
`!now:x`
| Xh658sr | Current date/time in "x" format
`!today`
| 2023-07-06 | Current date in UTC / RFC 3339
`!today:local`
| 2023-07-06 | Current date in local timezone
`!today:MST7MDT`
| 2023-07-06 | Current date in custom timezone
`!today:MST7MDT:%v`
| 6-Jul-2023 | Current date in custom timezone and format
`!today:US/Hawaii`
| 2023-07-05 | Current date in custom locale
`!today:US/Hawaii:%x`
| 07/05/23 | Current date in custom locale and format
`!today:UTC:%A`
| Thursday | Current date in UTC and custom format
!
with a backslash: \!
.bash
cargo install kapow bat
NOTE: Installing [bat
] is optional, but if installed, kapow uses it for syntax
highlighting and paging (see the -p
, -P
, -H
, -l
, and -r
options); also
it's a nice utility to have around.
text
$ kapow -V
kapow 2.11.0
```text $ kapow -h KAPOW!
Usage: kapow [OPTIONS] [PATH]...
Arguments: [PATH]... Source file(s) [default: -]
Options:
-p Page output
-P Do not page output
-H Disable syntax highlighting
-L Display all syntax highlight languages
-l
Code | Description ---|--- 101 | Could not read input file 102 | Could not read included file 103 | Could not change directory 104 | !run directive command failed
NOTE: The kapow process may not appear to have exited with these error codes
in "normal usage" because output is piped to [bat
] as a pager if it is
installed and output is a TTY and unfortunately [bat
] masks the error code.
See the readme
task in Makefile.toml
:
t/VERSION.md
from t/VERSION.t.md
!run:../target/release/kapow -V
t/USAGE.md
from t/USAGE.t.md
!run:../target/release/kapow -h
README.md
from t/README.md
!inc:VERSION.md
!inc:USAGE.md
`!now`
(all variants)Please find the [CHANGELOG.md
] in the [repository].
bash
cargo install cargo-audit cargo-edit cargo-make cargo-outdated dtg \
kapow miniserve