cli
Version, currently 0.7.053 versions
- 0.7.0latestJun 7, 2018
- 0.6.10not indexedJun 27, 2020
- 0.6.9not indexedJun 27, 2020
- 0.6.8not indexedJun 27, 2020
- 0.6.7not indexedJun 27, 2020
- 0.6.6not indexedJun 27, 2020
- 0.6.5not indexedJun 27, 2020
- 0.6.4not indexedJun 27, 2020
- 0.6.3not indexedJun 27, 2020
- 0.6.2not indexedJun 27, 2020
- 0.6.1not indexedJun 27, 2020
- 0.6.0not indexedJun 27, 2020
- 0.5.2not indexedJun 27, 2020
- 0.5.1not indexedJun 27, 2020
- 0.5.1.5not indexedJun 27, 2020
- 0.5.1.4not indexedJun 27, 2020
- 0.5.1.3not indexedJun 27, 2020
- 0.5.1.2not indexedJun 27, 2020
- 0.5.1.1not indexedJun 27, 2020
- 0.5.0not indexedJun 27, 2020
- 0.4.0not indexedJun 27, 2020
- 0.4.0.6not indexedJun 27, 2020
- 0.4.0.5not indexedJun 27, 2020
- 0.4.0.4not indexedJun 27, 2020
- 0.4.0.3not indexedJun 27, 2020
- 0.4.0.2not indexedJun 27, 2020
- 0.4.0.1not indexedJun 27, 2020
- 0.3.1not indexedJun 27, 2020
- 0.3.1.3not indexedJun 27, 2020
- 0.3.1.2not indexedJun 27, 2020
- 0.3.1.1not indexedJun 27, 2020
- 0.3.0not indexedJun 27, 2020
- 0.2.5not indexedJun 27, 2020
- 0.2.4not indexedJun 27, 2020
- 0.2.3not indexedJun 27, 2020
- 0.2.3.3not indexedJun 27, 2020
- 0.2.3.2not indexedJun 27, 2020
- 0.2.3.1not indexedJun 27, 2020
- 0.2.2not indexedJun 27, 2020
- 0.2.1not indexedJun 27, 2020
- 0.2.0not indexedJun 27, 2020
- 0.1.11not indexedJun 27, 2020
- 0.1.10not indexedJun 27, 2020
- 0.1.9not indexedJun 27, 2020
- 0.1.8not indexedJun 27, 2020
- 0.1.7not indexedJun 27, 2020
- 0.1.6not indexedJun 27, 2020
- 0.1.5not indexedJun 27, 2020
- 0.1.4not indexedJun 27, 2020
- 0.1.3not indexedJun 27, 2020
- 0.1.2not indexedJun 27, 2020
- 0.1.1not indexedJun 27, 2020
- 0.1.0not indexedJun 27, 2020
github.com/mosop/cli
Yet another Crystal library for building command-line interface applications.
102 stars
2 dependents
License: MIT
Installation
# Add this to your shard.yml
dependencies:
cli:
github: mosop/cli
version: ~> 0.7.0Then run:
shards installshard.yml
- Crystal
0.24.2- License
- MIT
- Author
- mosop
Dependencies
Runtime Dependencies
- optarg~> 0.5.8github: mosop/optarg
- string_inflection~> 0.2.1github: mosop/string_inflection
Development Dependencies
- have_files~> 0.4.0github: mosop/have_filesdev
- crystal_plus~> 0.1.4github: mosop/crystal_plusdev
README
# Crystal CLI
Yet another Crystal library for building command-line interface applications.
[](https://circleci.com/gh/mosop/cli)
## Installation
Add this to your application's `shard.yml`:
```yaml
dependencies:
cli:
github: mosop/cli
```
<a name="code_samples"></a>
## Code Samples
### Option Parser
```crystal
class Hello < Cli::Command
class Options
bool "--bye"
arg "to"
end
def run
if args.bye?
print "Goodbye"
else
print "Hello"
end
puts " #{args.to}!"
end
end
Hello.run %w(world) # prints "Hello, world!"
Hello.run %w(--bye world) # prints "Goodbye, world!"
```
### Subcommand
```crystal
class Polygon < Cli::Supercommand
command "triangle", default: true
class Triangle < Cli::Command
def run
puts 3
end
end
class Square < Cli::Command
def run
puts 4
end
end
class Hexagon < Cli::Command
def run
puts 6
end
end
end
Polygon.run %w(triangle) # prints "3"
Polygon.run %w(square) # prints "4"
Polygon.run %w(hexagon) # prints "6"
Polygon.run %w() # prints "3"
```
### Replacing
```crystal
class New < Cli::Command
def run
puts "new!"
end
end
class Obsolete < Cli::Command
replacer_command New
end
Obsolete.run # prints "new!"
```
### Inheritance
```crystal
abstract class Role < Cli::Command
class Options
string "--name"
end
end
class Chase < Cli::Supercommand
class Mouse < Role
def run
puts "#{options.name} runs away."
end
end
class Cat < Role
def run
puts "#{options.name} runs into a wall."
end
end
end
Chase.run %w(mouse --name Jerry) # prints "Jerry runs away."
Chase.run %w(cat --name Tom) # prints "Tom runs into a wall."
```
### Help
```crystal
class Call < Cli::Command
class Help
header "Receives an ancient message."
footer "(C) 20XX mosop"
end
class Options
arg "message", desc: "your message to call them", required: true
bool "-w", not: "-W", desc: "wait for response", default: true
help
end
end
Call.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
```
### Versioning
```crystal
class Command < Cli::Supercommand
version "1.0.0"
class Options
version
end
end
Command.run %w(-v) # prints 1.0.0
```
### Shell Completion
```crystal
class TicketToRide < Cli::Command
class Options
string "--by", any_of: %w(train plane taxi)
arg "for", any_of: %w(kyoto kanazawa kamakura)
end
end
puts TicketToRide.generate_bash_completion
# or
puts TicketToRide.generate_zsh_completion
```
## Usage
```crystal
require "cli"
```
and see:
* [Code Samples](#code_samples)
* [Wiki](https://github.com/mosop/cli/wiki)
* [API Document](http://mosop.me/cli/Cli.html)
## Want to Do
- Application-Level Logger
- I18n
## Release Notes
See [Releases](https://github.com/mosop/cli/releases).
Documentation
Built from the current release. The first visit to a release nobody has asked for starts its build.
Links
This release
- Version
0.7.0- Tagged
- Jun 7, 2018
- Commit
7dbb1e1779dd- Crystal
0.24.2- Indexed
- yes
Dependents
Repository
github.com/mosop/cli
Metadata
- Created
- Aug 12, 2026
- Updated
- Aug 12, 2026
- Synced
- Aug 12, 2026
- Versions
- 53