I am very happy to announce the second release (v0.2.0) of ppx_subliner ! The new version is available through OPAM.
The extension had been greatly enhanced since the first release.
Now, the user is able to generate a multi-subcommand application from a single variant type with inline records. And the new version does not need to rely on other extensions.
type params = Foo of { my_arg : string } | Bar
[@@deriving subliner]
let handle = function
| Foo { my_arg } -> print_endline ("Foo " ^ my_arg)
| Bar -> print_endline "Bar"
[%%subliner.cmds
eval.params <- handle]
(** Some docs *)
The user is also able to generate Cmdliner.Term.t from a record type, and the signature is fully compatible with the generated value of ppx_deriving_cmdliner . The deriver support various attributes, such as [@pos], [@pos_all], [@pos_left], [@non_empty], [@conv], [@term], [@file], to support different kinds of positional arguments and types, and give the user great flexibility.
type foo = { my_arg : string } [@@deriving subliner]
This release should cover majority of Cmdliner. Please see the documentation for the full feature set.
Happy hacking!