main 2.3.0 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README +6 -0
- data/a.rb +6 -6
- data/lib/main/base.rb +8 -4
- data/lib/main/parameter.rb +17 -1
- metadata +2 -2
    
        data/README
    CHANGED
    
    | @@ -370,6 +370,12 @@ DOCS | |
| 370 370 | 
             
              API section below
         | 
| 371 371 |  | 
| 372 372 | 
             
            HISTORY
         | 
| 373 | 
            +
              2.4.0
         | 
| 374 | 
            +
                - fixed bug where 'abort("message")' would print "message" twice on exit
         | 
| 375 | 
            +
                  if running under a nested mode.
         | 
| 376 | 
            +
             | 
| 377 | 
            +
                - allowed parameters to be overridden completely in subclasses (modes)
         | 
| 378 | 
            +
             | 
| 373 379 | 
             
              2.3.0
         | 
| 374 380 | 
             
                - re-worked Main.new such that client code may define an #initialize
         | 
| 375 381 | 
             
                  methods and the class will continue to work.  that is to say it's fine
         | 
    
        data/a.rb
    CHANGED
    
    | @@ -1,17 +1,17 @@ | |
| 1 1 | 
             
            require 'main'
         | 
| 2 2 |  | 
| 3 3 | 
             
            Main {
         | 
| 4 | 
            +
              option 'bar'
         | 
| 4 5 |  | 
| 5 6 | 
             
              mode 'foo' do
         | 
| 7 | 
            +
                option('bar'){ required }
         | 
| 8 | 
            +
             | 
| 6 9 | 
             
                def run
         | 
| 7 | 
            -
                  p  | 
| 8 | 
            -
                  p @a
         | 
| 10 | 
            +
                  p params
         | 
| 9 11 | 
             
                end
         | 
| 10 12 | 
             
              end
         | 
| 11 13 |  | 
| 12 | 
            -
              def  | 
| 13 | 
            -
                 | 
| 14 | 
            +
              def run 
         | 
| 15 | 
            +
                p params
         | 
| 14 16 | 
             
              end
         | 
| 15 | 
            -
              
         | 
| 16 | 
            -
              run(){ p @a; p @argv; p @env; }
         | 
| 17 17 | 
             
            }
         | 
    
        data/lib/main/base.rb
    CHANGED
    
    | @@ -6,12 +6,12 @@ module Main | |
| 6 6 |  | 
| 7 7 | 
             
                    class_eval do
         | 
| 8 8 | 
             
                      def run *a, &b
         | 
| 9 | 
            +
                        argv.push "--#{ argv.shift }" if argv.first == 'help'
         | 
| 10 | 
            +
                        return mode_run! if mode_given?
         | 
| 11 | 
            +
             | 
| 9 12 | 
             
                        status =
         | 
| 10 13 | 
             
                          catch :exit do
         | 
| 11 14 | 
             
                            begin
         | 
| 12 | 
            -
                              argv.push "--#{ argv.shift }" if argv.first == 'help'
         | 
| 13 | 
            -
             | 
| 14 | 
            -
                              return mode_run! if mode_given?
         | 
| 15 15 |  | 
| 16 16 | 
             
                              parse_parameters
         | 
| 17 17 |  | 
| @@ -139,7 +139,7 @@ module Main | |
| 139 139 |  | 
| 140 140 | 
             
                module DSL
         | 
| 141 141 | 
             
                  def parameter *a, &b
         | 
| 142 | 
            -
                    parameters << Parameter. | 
| 142 | 
            +
                    (parameters << Parameter.create(:parameter, *a, &b)).last
         | 
| 143 143 | 
             
                  end
         | 
| 144 144 |  | 
| 145 145 | 
             
                  def option *a, &b
         | 
| @@ -354,6 +354,10 @@ module Main | |
| 354 354 | 
             
                  exit(status)
         | 
| 355 355 | 
             
                end
         | 
| 356 356 |  | 
| 357 | 
            +
                def abort message = 'exit'
         | 
| 358 | 
            +
                  raise SystemExit.new(message)
         | 
| 359 | 
            +
                end
         | 
| 360 | 
            +
             | 
| 357 361 | 
             
                def handle_exception e
         | 
| 358 362 | 
             
                  if e.respond_to?(:error_handler_before)
         | 
| 359 363 | 
             
                    fcall(e, :error_handler_before, self)
         | 
    
        data/lib/main/parameter.rb
    CHANGED
    
    | @@ -29,7 +29,7 @@ module Main | |
| 29 29 | 
             
                    end
         | 
| 30 30 | 
             
                  end
         | 
| 31 31 |  | 
| 32 | 
            -
                  Types = []
         | 
| 32 | 
            +
                  Types = [ Parameter ]
         | 
| 33 33 | 
             
                  def inherited other
         | 
| 34 34 | 
             
                    Types << other
         | 
| 35 35 | 
             
                  end
         | 
| @@ -443,6 +443,22 @@ module Main | |
| 443 443 | 
             
                      end
         | 
| 444 444 | 
             
                    end
         | 
| 445 445 | 
             
                  end
         | 
| 446 | 
            +
             | 
| 447 | 
            +
                  def delete name, *names
         | 
| 448 | 
            +
                    name, *names = name.names if Parameter === name
         | 
| 449 | 
            +
                    names = Cast.list_of_string name, *names
         | 
| 450 | 
            +
                    keep = []
         | 
| 451 | 
            +
                    each do |param|
         | 
| 452 | 
            +
                      common = Cast.list_of_string(param.names) & names 
         | 
| 453 | 
            +
                      keep << param if common.empty?
         | 
| 454 | 
            +
                    end
         | 
| 455 | 
            +
                    replace keep
         | 
| 456 | 
            +
                  end
         | 
| 457 | 
            +
             | 
| 458 | 
            +
                  def << *a 
         | 
| 459 | 
            +
                    delete *a
         | 
| 460 | 
            +
                    super
         | 
| 461 | 
            +
                  end
         | 
| 446 462 | 
             
                end
         | 
| 447 463 |  | 
| 448 464 | 
             
                class DSL
         | 
    
        metadata
    CHANGED