shellopts 0.9.1 → 0.9.2
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.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/TODO +1 -0
- data/lib/shellopts/grammar/command.rb +0 -1
- data/lib/shellopts/utils.rb +16 -0
- data/lib/shellopts/version.rb +1 -1
- data/lib/shellopts.rb +24 -11
- metadata +3 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 710c9651cae2494969fe031b4d8a91bbcebd123c8d395b512bec5b193c50e6ea
         | 
| 4 | 
            +
              data.tar.gz: e2a4901ea784ec6331ccd65ef4df58daf04aba44c0c395f736da27eee14f8f12
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: ad85e178173ba17e7cfc0b452cc1bcdd50e7c17374885b8aecddd4495e04a5492c14bdecfdd13445738e63c8bfa2434c3f0957ab1e7d803dc18ba42722726761
         | 
| 7 | 
            +
              data.tar.gz: be53d32e0fdcbcf4caee01762e5bb5d6b8452ffeaf6ae7f65e9746cf7a222aa65ab38ca8dd4db8de91c6f0507e4fc9df88d30c286e29a83d994d020bae4759a1
         | 
    
        data/README.md
    CHANGED
    
    | @@ -257,8 +257,8 @@ system (eg. disk full) and omits the usage summary | |
| 257 257 | 
             
            ```
         | 
| 258 258 |  | 
| 259 259 | 
             
            The methods are defined as instance methods on `ShellOpts::ShellOpts` and as
         | 
| 260 | 
            -
            class methods on `ShellOpts`.  | 
| 261 | 
            -
             | 
| 260 | 
            +
            class methods on `ShellOpts`. They can also be included in the global scope by
         | 
| 261 | 
            +
            `include ShellOpts::Utils`
         | 
| 262 262 |  | 
| 263 263 | 
             
            ## Example
         | 
| 264 264 |  | 
    
        data/TODO
    CHANGED
    
    
| @@ -0,0 +1,16 @@ | |
| 1 | 
            +
             | 
| 2 | 
            +
            module ShellOpts
         | 
| 3 | 
            +
              # Use `include ShellOpts::Utils` to include ShellOpts utility methods in the
         | 
| 4 | 
            +
              # global namespace
         | 
| 5 | 
            +
              module Utils
         | 
| 6 | 
            +
                # Forwards to `ShellOpts.error`
         | 
| 7 | 
            +
                def error(*msgs)
         | 
| 8 | 
            +
                  ::ShellOpts.error(*msgs)
         | 
| 9 | 
            +
                end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                # Forwards to `ShellOpts.fail`
         | 
| 12 | 
            +
                def fail(*msgs)
         | 
| 13 | 
            +
                  ::ShellOpts.fail(*msgs)
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
            end
         | 
    
        data/lib/shellopts/version.rb
    CHANGED
    
    
    
        data/lib/shellopts.rb
    CHANGED
    
    | @@ -7,6 +7,9 @@ require 'shellopts/parser.rb' | |
| 7 7 | 
             
            # library API consists of the methods {ShellOpts.process}, {ShellOpts.error},
         | 
| 8 8 | 
             
            # and {ShellOpts.fail} and the result class {ShellOpts::ShellOpts}
         | 
| 9 9 | 
             
            #
         | 
| 10 | 
            +
            # ShellOpts inject the constant PROGRAM into the global scope. It contains the 
         | 
| 11 | 
            +
            # name of the program
         | 
| 12 | 
            +
            #
         | 
| 10 13 | 
             
            module ShellOpts
         | 
| 11 14 | 
             
              # Process command line options and arguments.  #process takes a usage string
         | 
| 12 15 | 
             
              # defining the options and the array of command line arguments to be parsed
         | 
| @@ -76,7 +79,7 @@ module ShellOpts | |
| 76 79 | 
             
              #   shellopts.args.each { |arg| ... }
         | 
| 77 80 | 
             
              #   shellopts.error("Something went wrong")
         | 
| 78 81 | 
             
              #
         | 
| 79 | 
            -
              def self.process(usage, argv, program_name:  | 
| 82 | 
            +
              def self.process(usage, argv, program_name: PROGRAM, &block)
         | 
| 80 83 | 
             
                if !block_given?
         | 
| 81 84 | 
             
                  ShellOpts.new(usage, argv, program_name: program_name)
         | 
| 82 85 | 
             
                else
         | 
| @@ -93,15 +96,21 @@ module ShellOpts | |
| 93 96 | 
             
                @shellopts = nil
         | 
| 94 97 | 
             
              end
         | 
| 95 98 |  | 
| 96 | 
            -
              # Print error message and usage string and exit with status 1.  | 
| 97 | 
            -
              #  | 
| 99 | 
            +
              # Print error message and usage string and exit with status 1. It use the
         | 
| 100 | 
            +
              # current ShellOpts object if defined. This method should be called in
         | 
| 101 | 
            +
              # response to user-errors (eg. specifying an illegal option)
         | 
| 98 102 | 
             
              def self.error(*msgs)
         | 
| 99 | 
            -
                @shellopts&. | 
| 103 | 
            +
                program = @shellopts&.program_name || PROGRAM
         | 
| 104 | 
            +
                usage = @shellopts&.usage || (defined?(USAGE) && USAGE ? Grammar.compile(PROGRAM, USAGE).usage : nil)
         | 
| 105 | 
            +
                emit_and_exit(program, usage, *msgs)
         | 
| 100 106 | 
             
              end
         | 
| 101 107 |  | 
| 102 | 
            -
              # Print error message and exit with status 1.  | 
| 108 | 
            +
              # Print error message and exit with status 1. It use the current ShellOpts
         | 
| 109 | 
            +
              # object if defined. This method should not be called in response to
         | 
| 110 | 
            +
              # user-errors but system errors (like disk full)
         | 
| 103 111 | 
             
              def self.fail(*msgs)
         | 
| 104 | 
            -
                @shellopts&. | 
| 112 | 
            +
                program = @shellopts&.program_name || PROGRAM
         | 
| 113 | 
            +
                emit_and_exit(program, nil, *msgs)
         | 
| 105 114 | 
             
              end
         | 
| 106 115 |  | 
| 107 116 | 
             
              # The compilation object
         | 
| @@ -162,16 +171,13 @@ module ShellOpts | |
| 162 171 | 
             
                # should be called in response to user-errors (eg. specifying an illegal
         | 
| 163 172 | 
             
                # option)
         | 
| 164 173 | 
             
                def error(*msgs)
         | 
| 165 | 
            -
                   | 
| 166 | 
            -
                  $stderr.puts "Usage: #{program_name} #{usage}"
         | 
| 167 | 
            -
                  exit 1
         | 
| 174 | 
            +
                  ::ShellOpts.emit_and_exit(program_name, usage, msgs)
         | 
| 168 175 | 
             
                end
         | 
| 169 176 |  | 
| 170 177 | 
             
                # Print error message and exit with status 1. This method should not be
         | 
| 171 178 | 
             
                # called in response to user-errors but system errors (like disk full)
         | 
| 172 179 | 
             
                def fail(*msgs)
         | 
| 173 | 
            -
                   | 
| 174 | 
            -
                  exit 1
         | 
| 180 | 
            +
                  ::ShellOpts.emit_and_exit(program_name, nil, msgs)
         | 
| 175 181 | 
             
                end
         | 
| 176 182 | 
             
              end
         | 
| 177 183 |  | 
| @@ -191,5 +197,12 @@ module ShellOpts | |
| 191 197 |  | 
| 192 198 | 
             
            private
         | 
| 193 199 | 
             
              @shellopts = nil
         | 
| 200 | 
            +
             | 
| 201 | 
            +
              def self.emit_and_exit(program, usage, *msgs)
         | 
| 202 | 
            +
                $stderr.puts "#{program}: #{msgs.join}"
         | 
| 203 | 
            +
                $stderr.puts "Usage: #{program} #{usage}" if usage
         | 
| 204 | 
            +
                exit 1
         | 
| 205 | 
            +
              end
         | 
| 194 206 | 
             
            end
         | 
| 195 207 |  | 
| 208 | 
            +
            PROGRAM = File.basename($PROGRAM_NAME)
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: shellopts
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.9. | 
| 4 | 
            +
              version: 0.9.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Claus Rasmussen
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2019-10- | 
| 11 | 
            +
            date: 2019-10-27 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         | 
| @@ -115,6 +115,7 @@ files: | |
| 115 115 | 
             
            - lib/shellopts/grammar/option.rb
         | 
| 116 116 | 
             
            - lib/shellopts/grammar/program.rb
         | 
| 117 117 | 
             
            - lib/shellopts/parser.rb
         | 
| 118 | 
            +
            - lib/shellopts/utils.rb
         | 
| 118 119 | 
             
            - lib/shellopts/version.rb
         | 
| 119 120 | 
             
            - shellopts.gemspec
         | 
| 120 121 | 
             
            homepage: http://github.com/clrgit/shellopts
         |