This is a Rust port of amboso, a basic build tool wrapping make and supporting git tags.
Invil can be used to:
invil build
.invil init <DIR>
Generate a basic header+impl containing project info, such as time of current commit
It's (*) on par with the original implementation, as of amboso
2.0.8
.
Check the next section for more support info.
Check this section for info about extensions to amboso 2.0.4
.
At the moment, only C projects are supported.
python
support.gcc
call. This may be expanded in a future version, to at least provide support for passing arguments to the compiler.invil
will expect a ready Makefile
that correctly builds the target binary when make
is called.Automake mode: for all tags higher than the version specified as providing automake support, invil
will expect a Makefile.am
and a configure.ac
, so that a Makefile
with the same assumptions as Make mode can be generated.
For more information on the stego.lock
file, see the amboso info about it.
For more information on the anvil
tool, see the amboso wiki. Work in progress.
Basic arguments parsing that complies with the bash implementation
Same default for amboso directory (./bin
).
Parse stego.lock
with compatible logic to bash implementation
Base mode: full support
Git mode: full support
Makefile
in repo root.C header gen: complete support (*)
Test mode: complete support (*)
-b
$
.Passing configure arguments: complete support
Subcommands:
Note:
0.1.6
, by default make rebuild
is called on build operation. This is the expected behaviour of amboso
2.x
. To revert to 1.x
original behaviour and call just make
, run with -R
or --no-rebuild
.Flags support status:
[x] Basic env flags: -D
, -K
, -M
, -S
, -E
[ ] Clock flag: -Y <startTime>
[x] Linter mode: -x
-l
-L
[x] C header gen mode: -G
(detailed info is empty)
[x] Verbose flag: -V
[x] Test macro: -t
[x] Test mode: -T
[x] Git mode: -g
[x] Base mode: -B
[x] Build: -b
[x] Run: -r
[x] Init: -i
[x] Delete: -d
[x] Purge: -p
[x] Help: -h
[ ] Big Help: -H
[x] Version: -v
[x] List tags for current mode: -l
[x] List tags for git/base mode: -L
[x] Quiet flag: -q
[x] Watch flag: -w
[x] Warranty flag: -W
[x] Ignore gitcheck flag: -X
[x] Silent: -s
[x] Pass config argument: -C
[ ] Run make pack: -z
[x] No rebuild: -R
[x] Logged run: -J
./anvil.log
. Not backwards compatible with repos not ignoring the file explicitly.[x] No color: -P
[x] Force build: -F
[x] Turn off extensions: -e
(Only relative to 2.0.0)
[x] Run make when no arguments are provided
make
build mode, call make rebuild
by default
--no-rebuild
to disable make rebuild and run just make
--logged
to output full log to file
./anvil.log
. Not backwards compatible with repos not ignoring the file explicitly.-G
flag also includes:
env::consts::OS
)--no-color
to disable color output--force
to overwrite ready targets-e, --strict
-a
to set compatibility level-k
to set project type-O
to set stego.lock dir (defaults to working directory)stego.lock
parsing, up to 1.7.x
$HOME/.anvil/anvil.toml
These features are experimental and subject to change.
To enable them, add --features="anvilPy"
to your build/install command.
pyproject.toml
is present alongside stego.lock
stego.lock
itselfstego.lock
):
[ anvil ]
version = "2.1.0"
kern = "anvilPy"
--strict
To see how this marvelous work of art works, run:
cd try-anvil
./try_anvil_auto
Refer to amboso info about this test script: link
Our version was slightly modified to actually make cargo build the release version of the binary we want to symlink to anvil
.
Check out this page for a very basic benchmark of runtime, relative to bash amboso
implementation.
Command
to pipeline the git operations in a ugly iper-indented mess.