Renderingla

cli

CLI root with options, operands, subcommands, and module mounts.

Syntax: @ cli <name>

Category

cli

Related

Examples

examples/corpus/annotation-sugar/cli-braced.fab (canonical · annotation)

Braced canonical @ cli program marker.

# Braced @ cli — canonical program name record
#
# TARGET: annotation-sugar stage 2
# PAIR: sugar `@ cli "NAME"` (see optio/optio.fab)

@ cli { nomen = "annotation-sugar-smoke" }
@ optio {
    binding = verbose,
    brevis = "v",
    longum = "verbose",
    typus = bivalens,
    descriptio = "Verbose mode",
}
incipit argumenta args { }

examples/corpus/cli/cli.fab (canonical · annotation)

CLI root with options, operands, subcommands, and module mounts.

# cli — structured CLI annotation tour
#
# @ cli / @ versio / @ descriptio / @ optio / @ operandus / @ imperium / @ alias
# @ imperia mounts imported command modules (see package-cli fixture).
#
# GRAMMAR:
#   cliDecl :← '@' 'cli' stringLit
#   incipit argumenta args { ... }
#
# EXPECTED OUTPUT:
#   Requires CLI flags/args at run time; no fixed stdout contract.
#
# BACKEND:
#   Rust runtime whitelist (missing operand 'nomen'); Go compile whitelist.
#   Cross-ref optio/, operandus/, descriptio/, ubique/, argumenta/ keyword dirs.

@ cli "exemplum"
@ versio "0.1.0"
@ descriptio "Faber CLI framework smoke exemplum"
@ optio verbose brevis "v" longum "verbose" typus bivalens ubique descriptio "Enable verbose output"
incipit argumenta args {
}

@ imperium "greet"
@ alias "g"
@ descriptio "Greet by name"
@ operandus textus nomen descriptio "Name to greet"
functio greet() argumenta args → vacuum {
    si args.verbose {
        nota "verbose"
    }
    nota "Salve, §!"(args.nomen)
}

@ imperium "version"
@ alias "v"
functio version() → vacuum {
    nota "exemplum v0.1.0"
}