A C++ library that uses clever tricks to create super low-code, yet fully functional CLIs
v0.2 is mostly a matured version of v0.1, in a sense that not many new features were added, however existing features were improved. In summary, a lot of breaking changes and a lot of internal structural changes. The rationale is to make most of the breaking changes early in development, so that new features can be added to a "more final" version of the library.
<fire-hpp/fire.hpp>
not <fire.hpp>
.fire::arg("x")
and fire::arg("long-name")
you write fire::arg("-x")
and fire::arg("--long-name")
.fire::arg({name, description}, default value)
instead of fire::arg(name, description, default value)
.fire::arg(fire::variadic())
instead of fire::arg::vector()
.FIRE_NO_SPACE_ASSIGNMENT(...)
.FIRE(...)
now works with positional/variadic argument, previously needed FIRE_NO_SPACE_ASSIGNMENT(...)
. This was a HUGE change internally, had to implement a totally new argument introspection algorithm.fire.hpp
now compiles without exception support, but you need to use FIRE_NO_EXCEPTIONS(...)
instead of FIRE(...)
, which has limitations.program -- --some-text
--some-text
is interpreted as positional, per convention.make -j8 <=> make -j 8
if unambiguous.Features: