optarg
optarg
Yet another library for parsing command-line options and arguments, written in the Crystal language.
Installation
Add this to your application's shard.yml
:
dependencies:
optarg:
github: mosop/optarg
Features
-
Easy Access
class Model < Optarg::Model string "--foo" end result = Model.parse(%w(--foo bar)) result.foo # => "bar"
-
Nilable Accessor
class Model < Optarg::Model string "--foo" end result = Model.parse(%w()) result.foo? # => nil result.foo # raises KeyError
-
Synonyms
class Model < Optarg::Model string %w(-f --file) end result = Model.parse(%w(-f foo.cr)) result.f # => "foo.cr" result.file # => "foo.cr"
-
Default Value
class Model < Optarg::Model string "--foo", default: "bar" end result = Model.parse(%w()) result.foo # => "bar"
-
Boolean Value
class Model < Optarg::Model bool "-b" end result = Model.parse(%w(-b)) result.b? # => true
-
Negation
class Model < Optarg::Model bool "-b", not: "-B" end result = Model.parse(%w(-B)) result.b? # => false
-
Non-defined Arguments
class Model < Optarg::Model string "-s" bool "-b" end result = Model.parse(%w(-s foo -b bar -- baz)) result.args # => ["bar"] result.unparsed_args # => ["baz"]
-
Inheritance (Reusable Model)
class Animal < Optarg::Model bool "--sleep" end class Cat < Animal bool "--mew" end class Dog < Animal bool "--woof" end cat = Cat.parse(%w(--sleep --mew)) dog = Dog.parse(%w(--sleep --woof))
-
Handler
class Model < Optarg::Model on("--goodbye") { world! } def world! raise "Goodbye, world!" end end Model.parse %w(--goodbye) # raises "Goodbye, world!"
-
Custom Initializer
class The def message "Someday again!" end end class Model < Optarg::Model def initialize(argv, @the : The) super argv end on("--goodbye") { raise @the.message } end Model.new(%w(--goodbye), The.new).parse # raises "Someday again!"
-
[WIP] Documentation
Usage
require "optarg"
and see Features.
Releases
- v0.1.3
- Custom Initializer
- v0.1.2
- Synonyms
- v0.1.1
- Handler
Development
[WIP]
Contributing
- Fork it ( https://github.com/mosop/optarg/fork )
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- Create a new Pull Request
Contributors
- mosop - creator, maintainer