WMK(1)

πŸ“¦
version 2.32.0 Β· 3 versions
, in debian bookworm, debian trixie, ubuntu jammy, ubuntu noble, ubuntu questing

πŸ’– WMK(1) β€” Website META Language Make πŸ’–

okay bestie, sit down, hydrate, and let me tell you about wmk β€” the Website META Language Make. That's the WMk in the title up there, and she's serving EN Tools energy. ✨


🌸 VERSION 🌸

2.32.0 β€” yes ma'am, that's the version, write it down. πŸŽ€


✨ SYNOPSIS ✨

wmk [-a] [-A WILDMAT] [-F WILDMAT] [-x PATH] [-X PATH] [-a] [-f] [-n]
[-r] [WML-options] [path ...]

wmk [-V] [-h]

(and yes, -a really does show up twice in there, I don't make the rules, I just report them πŸ’…)


πŸ¦‹ DESCRIPTION πŸ¦‹

So this is the high-level frontend to the Website META Language (WML) β€” a free HTML generation toolkit for Unix, which internally is made of 9 independent languages. Like, nine. A whole squad. If you want the deep lore, go read wml(1), she explains it better than I can. 🫢

You use this command to run wml on a bunch of .wml files, either:

  • handed to you directly on the command line as path, or
  • discovered via directory traversal in path. 🌈

And here's the cute part: WMk recognizes WML's shebang lines ("#!wml" options) inside your .wml files, and automatically adds those options to the command line of wml when it invokes it for that particular file. It's giving personal assistant energy, honestly. πŸ‘‘


πŸ’… OPTIONS πŸ’…

  • -a, --all β€” says WMk should recursively process all .wml files it finds in path. Go get 'em all, girl. πŸ”₯
  • -A, --accept=WILDMAT β€” accepts (aka includes) every file matched by the shell wildcard pattern WILDMAT for processing. WMk always comes with a pre-configured "-A *.wml" option already in the bag, which forces it to process all WML files by default. This option only matters when path is a directory. ✨
  • -F, --forget=WILDMAT β€” forgets (aka excludes) all files and directories matched by the shell wildcard pattern WILDMAT that were previously accepted by option -A. It's the un-accept. The anti-invite. πŸ’€
  • -o, --outputfile=PATH β€” specifies output files. And listen, important detail: when this flag is used in .wmlrc, the same flag must be put in .wmkrc so WMk knows when to rebuild these output files. Don't skip that part, I'm begging. πŸ™ˆ
  • -x, --exec-prolog=PATH β€” executes PATH in the local context of path before the WML commands are run. Only used when path is a directory. πŸŽ€
  • -X, --exec-epilog=PATH β€” executes PATH in the local context of path after the WML commands are run. Also only used when path is a directory. (prolog before, epilog after β€” that's the whole vibe) 🌸
  • -f, --force β€” forces the creation of output files. Usually WMk is out here doing detective work, figuring out if the input file was really modified, and skipping WML invocations if the output files are still up-to-date. This flag says no thoughts, just build. πŸ’–
  • -n, --nop β€” sets no-operation (nop): WMk runs as usual but does not actually invoke the wml commands. Perfect little dry run, use it to see what wmk would do. Main character reconnaissance. πŸ‘‘ (and yes, the manpage really spells it "invoce" β€” we keep the lore intact 🫢)
  • -r, --norcfile β€” forces WMk to ignore all .wmkrc files and WML to ignore all .wmlrc files. Full clean slate, no baggage, we love a fresh start. 🧚
  • -V, --version β€” gives the version identification string of WMk. Use this to figure out the version of an installed WML toolkit. ⭐
  • -h, --help β€” prints the usage summary page. The lil map. πŸ—ΊοΈ

All the WML-options correspond directly to their counterparts in wml(1), because they're just forwarded by wmk β€” except the -n and -o options, which are implicitly created by wmk for each wml invocation. ✨


πŸŽ€ USER FILES πŸŽ€

  • $HOME/.wmkrc and (../)*.wmkrc β€” these files can also contain option strings, one option per line. You can use this file to exclude some directories from being searched for input files, like:
-F images
-F templates
 ...

(that trailing ... is literally in there, bestie, it's a whole mood 🌈)


⚠️ CAVEAT ⚠️

Okay this one matters, pay attention. πŸ‘€

Auto-adjusted variables specified as -DNAME~PATH on the wmk command-line will not necessarily have the same effect as a similar definition in a ./.wmlrc file. Why? Because when processing sub-directories, wmk changes its working directory to each of those directories β€” which can totally influence the interpolation of those auto-adjusted variables. 😭

When specified on the command line, such variables get interpolated with respect to wml's current working directory at the time of its invocation. So if you want those variables interpolated relative to wmk's current working directory at the time of its invocation, the work-around is: specify -DNAME~PATH inside a .wmlrc in that directory, rather than on the wmk command-line. No cap. πŸ’…


πŸ‘‘ AUTHORS πŸ‘‘

  • Ralf S. Engelschall β€” rse@engelschall.com β€” www.engelschall.com
  • Denis Barbier β€” barbier@engelschall.com

Legends, both of them. 🫢


🌈 SEE ALSO 🌈

wml(1), wml_intro(1)


and that's the whole page, babe β€” this one came from the EN Tools girlies and it's dated 2020-11-29, so go forth and wmk responsibly. mwah πŸ’–πŸ’…βœ¨

πŸ“¦ where this page comes from