.TH BAKE "1" "August 2024" "bake 20240930" "User Commands" .SH NAME .B bake \- file embeddable scripts .SH SYNOPSIS .B bake [\-chlnx] [\-s ] [ARGS...] .SH DESCRIPTION bake is a simple tool meant to execute embedded shell commands within any file. It executes with /bin/sh the command after a "\fB@BAKE\fP " to the end of the line (a UNIX newline: '\fB\\n\fP') or to the first instance of @STOP. This format may be embedded within \fBany file\fP. It roots the shell execution in the directory of the given file. Options must always be put before the filename, and short options may be merged together, numerical options must be trailing. .HP \-h \-\-help, Help message \fB\-n \-\-dry\-run\fP, don't execute or remove anything \fB\-c \-\-color\fP, disables color \fB\-l \-\-list\fP, lists available bake blocks \fB\-s \-\-select\fP \, selects Nth bake block \fB\-x \-\-expunge\fP, Removes file specified in the expunge block .PP Macros All macros can be exempted by prefixing them with a backslash, which'll be subtracted in the expansion. backslashes may be used to extend a command over several lines. These macros will expand to their counterpart before execution. .TP .B @FILENAME, @FILE, @NAME, $@ returns target\-file (abc.x.txt) .TP .B @SHORT, $* returns target\-file without suffix (abc.x.txt \-> abc.x) supports choice syntax, @SHORT:N removes N suffixes, so (a.b.c 2 -> a) .TP .B @ARGS, $+ returns \fBarguments\fP, supports choice syntax: @ARGS:N prints the Nth argument starting from 0, leading plus prints inclusive remaining arguments (@ARGS:N+) .TP .B @LINE returns the line number .TP .B @RECURS returns full executable name (e.g. /usr/local/bin/bake) .PP Additional Features And Notes Shell execution may be disabled with the \fB-n\fP or \fB--dry-run\fP option. Expunge removes exactly one file specified in the @{TEXT} format, and is not recursive. Expunge simply outputs rm 'TEXT...', where text expands any instance of ' to \\'. .SH EXAMPLE .\" SRC BEGIN (example.c) .EX // example.c @BAKE cc -o @SHORT @NAME @ARGS #include int main (void) { puts("Hello."); return 0; } .EE .SH COPYRIGHT .PP Licensed under the public domain.