This library is no longer being maintained. It is being kept online to allow for past versions of the Amber CLI to still compile on pre Crystal 1.14 releases. Message Date: July 22nd 2025
Yet another Crystal library for building command-line interface applications.
Add this to your application's shard.yml:
dependencies:
cli:
github: mosop/cliclassHello < Cli::CommandclassOptions
bool "--bye"
arg "to"enddefrunif args.bye?
print"Goodbye"elseprint"Hello"endputs"#{args.to}!"endendHello.run %w(world)# prints "Hello, world!"Hello.run %w(--bye world)# prints "Goodbye, world!"classPolygon < Cli::Supercommand
command "triangle", default:trueclassTriangle < Cli::Commanddefrunputs3endendclassSquare < Cli::Commanddefrunputs4endendclassHexagon < Cli::Commanddefrunputs6endendendPolygon.run %w(triangle)# prints "3"Polygon.run %w(square)# prints "4"Polygon.run %w(hexagon)# prints "6"Polygon.run %w()# prints "3"classNew < Cli::Commanddefrunputs"new!"endendclassObsolete < Cli::Command
replacer_command NewendObsolete.run # prints "new!"abstractclassRole < Cli::CommandclassOptions
string "--name"endendclassChase < Cli::SupercommandclassMouse < Roledefrunputs"#{options.name} runs away."endendclassCat < Roledefrunputs"#{options.name} runs into a wall."endendendChase.run %w(mouse --name Jerry)# prints "Jerry runs away."Chase.run %w(cat --name Tom)# prints "Tom runs into a wall."classCall < Cli::CommandclassHelp
header "Receives an ancient message."
footer "(C) 20XX mosop"endclassOptions
arg "message", desc:"your message to call them", required:true
bool "-w", not:"-W", desc:"wait for response", default:true
help
endendCall.run %w(--help)Output:
call [OPTIONS] MESSAGE
Receives an ancient message.
Arguments:
MESSAGE (required) your message to call them
Options:
-w wait for response
(default: true)
-W disable -w
-h, --help show this help
(C) 20XX mosop
classCommand < Cli::Supercommand
version "1.0.0"classOptions
version
endendCommand.run %w(-v)# prints 1.0.0classTicketToRide < Cli::CommandclassOptions
string "--by", any_of:%w(train plane taxi)
arg "for", any_of:%w(kyoto kanazawa kamakura)endendputsTicketToRide.generate_bash_completion
# orputsTicketToRide.generate_zsh_completionrequire"cli"and see:
- Application-Level Logger
- I18n
See Releases.