Ever burned a cake?
Go to file
Emil Williams 3b64702955
documentation is important
and usually comes as an afterthought
I nearly forgot to add this basic information for general usability
Imagine this not being a general requirement for all software
2024-04-07 05:29:33 +00:00
bake.1 documentation is important 2024-04-07 05:29:33 +00:00
bake.c documentation is important 2024-04-07 05:29:33 +00:00
config.h major revision 2024-03-02 07:06:21 +00:00
dist.sh distrib 2024-03-24 20:31:24 +00:00
install.sh distrib 2024-03-24 20:31:24 +00:00
LICENSE init 2023-09-27 05:28:54 +00:00
README documentation is important 2024-04-07 05:29:33 +00:00
shake fix @{} regexp 2024-04-07 05:08:03 +00:00
TODO no select 2024-03-02 10:53:16 +00:00

--- Bake ---

Bake scripts into files.

Executes @BAKE to the end of the line or until @STOP within in any given file.

You may have multi-line commands, by either including a leading @STOP or by
 ending each line with a backslash.

The execution takes place at the root of the target file, so if you have:
`test/file.c', and then execution takes place at `test' and the file is
simply regarded as `file.c'.

you may see a real example in the primary and only source file: `bake.c'.
this is not targeted toward any language and should be fairly flexible,
especially when multi-line comments are available.  You should always
consider your usecase before using a tool like this.  Bake is not an
all-in-one solution, nor is it designed to be a sophisticated build system,
consider something like GNU Make or Meson instead.

Binary files (files that contain characters < ' ' or > '~') are supported.

Manpages are included: bake(1) shake(1)

--- Building ---

Bootstrapping may be done with Shake, simply run `./shake ./bake.c'

Or simply run `install.sh', you'll need to be a privileged user to
install the files. See the file's content for more details regarding
the installation.

--- Macro Extension ---

Macro provides various descriptive factors about the current context:

 @FILENAME :  Filename of the baked file         (abc.x.txt)
 @SHORT    :  Shortened version of the Filename  (^-> abc.x)
 @ARGS     :  the remaining arguments to Bake

$@, $*, $+, respectively mapped to @FILENAME, @SHORT, and @ARGS,
are still supported, avoid these in the future.

They are most useful for a template command, such as:
 @BAKE cc @FILENAME -o @SHORT @ARGS

Backslash, while otherwise ignored, will be respected at the end of the line to
concatenate lines together or if added to before any of listed macros will yield
the unfettered text. \SPECIAL_NAME will result in SPECIAL_NAME in the executed
shell command. Backslashes are applicable to all symbols used by Bake, they are
ignored otherwise.

--- Expunge Extension ---

Removes any singular file or directory non recursively defined within @{...},
this has no effect on the normal processing of the statement and is macro'd out
before it is executed.

--- Options ---

Options must come as the first argument, and may be merged together, such as -xn.

 -h, --help: displays help message, similarly to empty input.
 -n, --dry-run: DRYRUN, does NOT run anything!
 -x, --expunge: See above Expunge Extension section.

--- Shake ---

Bake was inspired by the Bash-based Shake utility (formerly eMake,
he liked my suggestion for a name).  It is included under authorization
of it's creator.  The original version of Shake may be found at:
<http://bis64wqhh3louusbd45iyj76kmn4rzw5ysawyan5bkxwyzihj67c5lid.onion/anon/shake>

Bake includes a modified Shake, both after installation and as a bootstrapper.
The modified version includes all features of Bake with the exceptions of
multi-line commands.  It is not a general replacement for Bake.

Bake is licensed under the GPLv3-only, See LICENSE.

Bake was created on September 13th, 2023, and is complete as of 2024/03/02.