svenfuchs/cl

View on GitHub
examples/_src/args/opts.erb.rb

Summary

Maintainability
A
0 mins
Test Coverage
#!/usr/bin/env ruby
$: << File.expand_path('lib')

<%= run sq(<<-'rb')
    require 'cl'

    module Opts
      class Bool < Cl::Cmd
        register :bool

        arg :bool, type: :bool

        def run
          p cmd: registry_key, bool: bool
        end
      end

      class Types < Cl::Cmd
        register :types

        arg :a, type: :bool
        arg :b, type: :int
        arg :c, type: :float
        arg :d

        def run
          p cmd: registry_key, a: a, b: b, c: c, d: d
        end
      end
    end
  rb
-%>

<%= run 'Cl.new($0).run(%w(bool on))' %>

<%= out '{:cmd=>:bool, :bool=>true}' %>

<%= run 'Cl.new($0).run(%w(types true 1 1.2 foo))' %>

<%= out '{:cmd=>:types, :a=>true, :b=>1, :c=>1.2, :d=>"foo"}' %>

<%= run 'Cl.new($0).run(%w(types true 1 1.2 foo bar))' %>

<%= out sq(<<-'str')
    Too many arguments: true 1 1.2 foo bar (given: 5, allowed: 4)

    Usage: bin/examples types [a:bool] [b:int] [c:float] [d] [options]

    Arguments:

      a           type: bool
      b           type: int
      c           type: float
      d           type: string

    Options:

      --help      Get help on this command
  str
%>

<%= run 'Cl.new($0).run(%w(types true one 1.2))' %>

<%= out sq(<<-'str')
    Wrong argument type (given: "one", expected: int)

    Usage: bin/examples types [a:bool] [b:int] [c:float] [d] [options]

    Arguments:

      a           type: bool
      b           type: int
      c           type: float
      d           type: string

    Options:

      --help      Get help on this command
  str
%>

<%= run 'Cl.new($0).run(%w(types true 1 one))' %>

<%= out sq(<<-'str')
    Wrong argument type (given: "one", expected: float)

    Usage: bin/examples types [a:bool] [b:int] [c:float] [d] [options]

    Arguments:

      a           type: bool
      b           type: int
      c           type: float
      d           type: string

    Options:

      --help      Get help on this command
  str
%>