mister_bin 0.5.0 → 0.6.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.
- checksums.yaml +4 -4
- data/README.md +12 -7
- data/lib/mister_bin/command.rb +8 -2
- data/lib/mister_bin/runner.rb +8 -6
- data/lib/mister_bin/version.rb +1 -1
- metadata +2 -114
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 6a2ff2144e3c182ac75eee0201e1fb2c709d070174b3f1d6d3474b4fc2996f2d
         | 
| 4 | 
            +
              data.tar.gz: 342666c56d570caa2c791ebf9e3fb259b35c6a94f5c348c6cec168ef381d8c86
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 276954e4955705da9a9eed20b1fe803cf702603b35141ebc096cee16537b3adf39b6aec29abeaa36ac0b10e084b7cf998ccd067bc9aca90cb50bef21edf91484
         | 
| 7 | 
            +
              data.tar.gz: b9ee0f5d12e13da32eef957066071b6bafaba92a9edc59ddd7d6f73a83c1b9e9be9406ae7d9664958ee6037d77710480a46daf923c4be6fb76563bce64363551
         | 
    
        data/README.md
    CHANGED
    
    | @@ -63,6 +63,11 @@ Creating a command line utility with Mister Bin involves at least two files: | |
| 63 63 | 
             
            2. One or more subcommand files. These files use the DSL, and will usually be
         | 
| 64 64 | 
             
               placed in your `lib/<your gem>/commands` folder.
         | 
| 65 65 |  | 
| 66 | 
            +
            WHen executing the commands, you can use only the first letters of the 
         | 
| 67 | 
            +
            command name. Mister Bin will search for the command that starts with your 
         | 
| 68 | 
            +
            input, and if it finds one and one only, it will execute it. For example, 
         | 
| 69 | 
            +
            if you have a `server` command, you can execute it with `yourapp s` if it
         | 
| 70 | 
            +
            is the only command that starts with an `s`.
         | 
| 66 71 |  | 
| 67 72 |  | 
| 68 73 | 
             
            Creating the Main Executable
         | 
| @@ -107,9 +112,9 @@ Text to display after the list of commands. | |
| 107 112 |  | 
| 108 113 | 
             
            #### `commands`
         | 
| 109 114 |  | 
| 110 | 
            -
            A hash of `{ ' | 
| 115 | 
            +
            A hash of `{ 'command_name' => ClassName }` to serve as command routes.
         | 
| 111 116 | 
             
            This is equivalent to adding routes later with 
         | 
| 112 | 
            -
            `runner.route ' | 
| 117 | 
            +
            `runner.route 'command_name', to: ClassName`.
         | 
| 113 118 |  | 
| 114 119 |  | 
| 115 120 | 
             
            #### `handler`
         | 
| @@ -128,7 +133,7 @@ Use the `#route` method as follows: | |
| 128 133 |  | 
| 129 134 | 
             
            ```ruby
         | 
| 130 135 | 
             
            runner = MisterBin::Runner.new
         | 
| 131 | 
            -
            runner.route < | 
| 136 | 
            +
            runner.route <command_name>, to: <Class Name>
         | 
| 132 137 | 
             
            ```
         | 
| 133 138 |  | 
| 134 139 | 
             
            for example:
         | 
| @@ -137,8 +142,7 @@ for example: | |
| 137 142 | 
             
            runner = MisterBin::Runner.new
         | 
| 138 143 | 
             
            runner.route 'dir', to: DirCommand
         | 
| 139 144 | 
             
            runner.route 'greet', to: GreetCommand
         | 
| 140 | 
            -
            runner.route 'config | 
| 141 | 
            -
            runner.route 'config show', to: ConfigDisplayerCommand
         | 
| 145 | 
            +
            runner.route 'config', to: ConfigCommand
         | 
| 142 146 | 
             
            ```
         | 
| 143 147 |  | 
| 144 148 | 
             
            If you wish to route all commands to the same class, you can use:
         | 
| @@ -159,7 +163,7 @@ runner.route_all to: GlobalCommand | |
| 159 163 | 
             
            Creating Commands
         | 
| 160 164 | 
             
            --------------------------------------------------
         | 
| 161 165 |  | 
| 162 | 
            -
            Create command classes by  | 
| 166 | 
            +
            Create command classes by inheriting from `MisterBin::Command`, for example:
         | 
| 163 167 |  | 
| 164 168 | 
             
            ```ruby
         | 
| 165 169 | 
             
            require 'mister_bin'
         | 
| @@ -169,7 +173,8 @@ class GreetCommand < MisterBin::Command | |
| 169 173 | 
             
              usage "app greet [NAME]"
         | 
| 170 174 | 
             
              param "NAME", "The recipient of the greeting"
         | 
| 171 175 |  | 
| 172 | 
            -
              def run | 
| 176 | 
            +
              def run
         | 
| 177 | 
            +
                # args hash is available everywhere in the calss
         | 
| 173 178 | 
             
                name = args['NAME'] || 'Luke'
         | 
| 174 179 | 
             
                puts "#{name}... I am your father..."
         | 
| 175 180 | 
             
              end
         | 
    
        data/lib/mister_bin/command.rb
    CHANGED
    
    | @@ -5,6 +5,12 @@ module MisterBin | |
| 5 5 | 
             
              class Command
         | 
| 6 6 | 
             
                include Colsole
         | 
| 7 7 |  | 
| 8 | 
            +
                attr_reader :args
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                def initialize(args)
         | 
| 11 | 
            +
                  @args = args
         | 
| 12 | 
            +
                end
         | 
| 13 | 
            +
             | 
| 8 14 | 
             
                class << self
         | 
| 9 15 | 
             
                  def description
         | 
| 10 16 | 
             
                    maker.summary || maker.help || ''
         | 
| @@ -12,9 +18,9 @@ module MisterBin | |
| 12 18 |  | 
| 13 19 | 
             
                  def execute(argv=[])
         | 
| 14 20 | 
             
                    args = Docopt.docopt docopt, version: maker.version, argv: argv
         | 
| 15 | 
            -
                    instance = new
         | 
| 21 | 
            +
                    instance = new args
         | 
| 16 22 | 
             
                    target = find_target_command instance, args
         | 
| 17 | 
            -
                    exitcode = instance.send target | 
| 23 | 
            +
                    exitcode = instance.send target
         | 
| 18 24 | 
             
                    exitcode.is_a?(Numeric) ? exitcode : 0
         | 
| 19 25 |  | 
| 20 26 | 
             
                  rescue Docopt::Exit => e
         | 
    
        data/lib/mister_bin/runner.rb
    CHANGED
    
    | @@ -38,7 +38,8 @@ module MisterBin | |
| 38 38 | 
             
                private
         | 
| 39 39 |  | 
| 40 40 | 
             
                def execute(argv)
         | 
| 41 | 
            -
                   | 
| 41 | 
            +
                  argv = normalize_argv_command argv
         | 
| 42 | 
            +
                  command = commands[argv[0]]
         | 
| 42 43 |  | 
| 43 44 | 
             
                  if command
         | 
| 44 45 | 
             
                    command.execute argv
         | 
| @@ -48,11 +49,12 @@ module MisterBin | |
| 48 49 | 
             
                  end
         | 
| 49 50 | 
             
                end
         | 
| 50 51 |  | 
| 51 | 
            -
                def  | 
| 52 | 
            -
                   | 
| 53 | 
            -
                   | 
| 54 | 
            -
                   | 
| 55 | 
            -
                   | 
| 52 | 
            +
                def normalize_argv_command(argv)
         | 
| 53 | 
            +
                  command = argv[0]
         | 
| 54 | 
            +
                  return argv if commands.has_key? command
         | 
| 55 | 
            +
                  candidates = commands.keys.select { |key| key =~ /^#{command}/ }
         | 
| 56 | 
            +
                  argv[0] = candidates.first if candidates.count == 1
         | 
| 57 | 
            +
                  argv
         | 
| 56 58 | 
             
                end
         | 
| 57 59 |  | 
| 58 60 | 
             
                def show_subs
         | 
    
        data/lib/mister_bin/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: mister_bin
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.6.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Danny Ben Shitrit
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2018-12- | 
| 11 | 
            +
            date: 2018-12-13 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: colsole
         | 
| @@ -38,118 +38,6 @@ dependencies: | |
| 38 38 | 
             
                - - "~>"
         | 
| 39 39 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 40 | 
             
                    version: '0.6'
         | 
| 41 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 42 | 
            -
              name: byebug
         | 
| 43 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 | 
            -
                requirements:
         | 
| 45 | 
            -
                - - "~>"
         | 
| 46 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            -
                    version: '10.0'
         | 
| 48 | 
            -
              type: :development
         | 
| 49 | 
            -
              prerelease: false
         | 
| 50 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 | 
            -
                requirements:
         | 
| 52 | 
            -
                - - "~>"
         | 
| 53 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            -
                    version: '10.0'
         | 
| 55 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 56 | 
            -
              name: rdoc
         | 
| 57 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 | 
            -
                requirements:
         | 
| 59 | 
            -
                - - "~>"
         | 
| 60 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            -
                    version: '6.0'
         | 
| 62 | 
            -
              type: :development
         | 
| 63 | 
            -
              prerelease: false
         | 
| 64 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 | 
            -
                requirements:
         | 
| 66 | 
            -
                - - "~>"
         | 
| 67 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            -
                    version: '6.0'
         | 
| 69 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 70 | 
            -
              name: rspec
         | 
| 71 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 72 | 
            -
                requirements:
         | 
| 73 | 
            -
                - - "~>"
         | 
| 74 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 75 | 
            -
                    version: '3.6'
         | 
| 76 | 
            -
              type: :development
         | 
| 77 | 
            -
              prerelease: false
         | 
| 78 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 79 | 
            -
                requirements:
         | 
| 80 | 
            -
                - - "~>"
         | 
| 81 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 82 | 
            -
                    version: '3.6'
         | 
| 83 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 84 | 
            -
              name: rspec_fixtures
         | 
| 85 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 86 | 
            -
                requirements:
         | 
| 87 | 
            -
                - - "~>"
         | 
| 88 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 89 | 
            -
                    version: '0.3'
         | 
| 90 | 
            -
              type: :development
         | 
| 91 | 
            -
              prerelease: false
         | 
| 92 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 93 | 
            -
                requirements:
         | 
| 94 | 
            -
                - - "~>"
         | 
| 95 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 96 | 
            -
                    version: '0.3'
         | 
| 97 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 98 | 
            -
              name: runfile
         | 
| 99 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 100 | 
            -
                requirements:
         | 
| 101 | 
            -
                - - "~>"
         | 
| 102 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 103 | 
            -
                    version: '0.10'
         | 
| 104 | 
            -
              type: :development
         | 
| 105 | 
            -
              prerelease: false
         | 
| 106 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 107 | 
            -
                requirements:
         | 
| 108 | 
            -
                - - "~>"
         | 
| 109 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 110 | 
            -
                    version: '0.10'
         | 
| 111 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 112 | 
            -
              name: runfile-tasks
         | 
| 113 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 114 | 
            -
                requirements:
         | 
| 115 | 
            -
                - - "~>"
         | 
| 116 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 117 | 
            -
                    version: '0.4'
         | 
| 118 | 
            -
              type: :development
         | 
| 119 | 
            -
              prerelease: false
         | 
| 120 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 121 | 
            -
                requirements:
         | 
| 122 | 
            -
                - - "~>"
         | 
| 123 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 124 | 
            -
                    version: '0.4'
         | 
| 125 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 126 | 
            -
              name: simplecov
         | 
| 127 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 128 | 
            -
                requirements:
         | 
| 129 | 
            -
                - - "~>"
         | 
| 130 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 131 | 
            -
                    version: '0.16'
         | 
| 132 | 
            -
              type: :development
         | 
| 133 | 
            -
              prerelease: false
         | 
| 134 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 135 | 
            -
                requirements:
         | 
| 136 | 
            -
                - - "~>"
         | 
| 137 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 138 | 
            -
                    version: '0.16'
         | 
| 139 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 140 | 
            -
              name: yard
         | 
| 141 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 142 | 
            -
                requirements:
         | 
| 143 | 
            -
                - - "~>"
         | 
| 144 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 145 | 
            -
                    version: '0.9'
         | 
| 146 | 
            -
              type: :development
         | 
| 147 | 
            -
              prerelease: false
         | 
| 148 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 149 | 
            -
                requirements:
         | 
| 150 | 
            -
                - - "~>"
         | 
| 151 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 152 | 
            -
                    version: '0.9'
         | 
| 153 41 | 
             
            description: Easily add command line interface to your gems
         | 
| 154 42 | 
             
            email: db@dannyben.com
         | 
| 155 43 | 
             
            executables: []
         |