optarg

Yet another library for parsing command-line options and arguments
0.1.5 released
mosop/optarg
26 4 3
mosop

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
    
  • 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

  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: mosop/optarg
  version: ~> 0.1.5
License MIT
Crystal none

Authors

  • mosop

Dependencies 0

Development Dependencies 0

Dependents 1

Last synced .
search fire star recently