optarg~amberframework

Yet another Crystal library for parsing command-line options and arguments.
0.1.1 released

optarg

Yet another library for parsing command-line options and arguments, written in the Crystal language.

Build Status

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
    
  • 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-option 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!"
    

Usage

require "optarg"

and see Features.

Releases

  • v0.1.1
    • Handler

Development

[WIP]

Contributing

  1. Fork it ( https://github.com/mosop/optarg/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors

  • mosop - creator, maintainer
optarg:
  github: amberframework/optarg
  version: ~> 0.1.1
License MIT
Crystal none

Authors

  • mosop

Dependencies 0

Development Dependencies 0

Dependents 2

Last synced .
search fire star recently