batali-tk 0.1.4 → 0.2.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/CHANGELOG.md +3 -0
- data/README.md +24 -1
- data/batali-tk.gemspec +1 -1
- data/bin/batali-tk +65 -2
- data/lib/batali-tk/monkey.rb +2 -2
- data/lib/batali-tk/provisioner.rb +16 -6
- data/lib/batali-tk/version.rb +1 -1
- metadata +5 -6
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 0b6f318f0e0529d04126964e9bef9be6da18018d
         | 
| 4 | 
            +
              data.tar.gz: f38cc77847cfecfe57598d7a44614bc69ec9eae9
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 51518ec2b64948257da81e2462e07e799f7d3164f89538b09f60229675ceda2097b22abc3f025e3be1673cdb58de7d0eeb5c51ab940c7d31aa51a6906774aea7
         | 
| 7 | 
            +
              data.tar.gz: e8f908d11159ba87c55d3514a499f79d481ea1e94bbd4787d4dae56f2af413b564644c0c2b59d6e9d8895620530c760d1d3d22c6466c5a6de7e6a5a059565ae3
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -17,7 +17,30 @@ use the wrapper command: | |
| 17 17 | 
             
            $ batali-tk --help
         | 
| 18 18 | 
             
            ```
         | 
| 19 19 |  | 
| 20 | 
            -
             | 
| 20 | 
            +
            ### Infrastructure Repository
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            The Batali test-kitchen wrapper can be used to test cookbooks within an
         | 
| 23 | 
            +
            infrastructure repository context. A `Batali` file is required at the root
         | 
| 24 | 
            +
            of the infrastructure repository and is optional within the cookbook itself
         | 
| 25 | 
            +
            (only required in the cookbook if extra testing dependencies are required).
         | 
| 26 | 
            +
            This can be done using the `--batali-cookbook-path` flag. As most cookbooks
         | 
| 27 | 
            +
            will live in a separate repository, you can provide the path to a working
         | 
| 28 | 
            +
            copy on your system:
         | 
| 29 | 
            +
             | 
| 30 | 
            +
            ```
         | 
| 31 | 
            +
            $ batali-tk test BOX --batali-cookbook-path ../users
         | 
| 32 | 
            +
            ```
         | 
| 33 | 
            +
             | 
| 34 | 
            +
            #### Environment constraints
         | 
| 35 | 
            +
             | 
| 36 | 
            +
            If you want to test the cookbook using a specific set of environment constraints,
         | 
| 37 | 
            +
            that can be done too. It required the auto discovery feature of Batali to be
         | 
| 38 | 
            +
            in use within the infrastructure repository Batali file. To enable environment
         | 
| 39 | 
            +
            constraints:
         | 
| 40 | 
            +
             | 
| 41 | 
            +
            ```
         | 
| 42 | 
            +
            $ batali-tk test BOX --batali-cookbook-path ../users --batali-environment production
         | 
| 43 | 
            +
            ```
         | 
| 21 44 |  | 
| 22 45 | 
             
            # Info
         | 
| 23 46 |  | 
    
        data/batali-tk.gemspec
    CHANGED
    
    | @@ -10,7 +10,7 @@ Gem::Specification.new do |s| | |
| 10 10 | 
             
              s.description = 'Batali support injector for test kitchen'
         | 
| 11 11 | 
             
              s.require_path = 'lib'
         | 
| 12 12 | 
             
              s.license = 'Apache 2.0'
         | 
| 13 | 
            -
              s.add_runtime_dependency 'batali', '>= 0.2. | 
| 13 | 
            +
              s.add_runtime_dependency 'batali', '>= 0.2.33', '< 1'
         | 
| 14 14 | 
             
              s.add_runtime_dependency 'test-kitchen', BataliTk::TK_CONSTRAINT
         | 
| 15 15 | 
             
              s.executables << 'batali-tk'
         | 
| 16 16 | 
             
              s.files = Dir['{lib,bin}/**/**/*'] + %w(batali-tk.gemspec README.md CHANGELOG.md CONTRIBUTING.md LICENSE)
         | 
    
        data/bin/batali-tk
    CHANGED
    
    | @@ -1,6 +1,64 @@ | |
| 1 1 | 
             
            #!/usr/bin/env ruby
         | 
| 2 2 |  | 
| 3 3 | 
             
            Signal.trap("INT") { exit 1 }
         | 
| 4 | 
            +
            require 'bogo'
         | 
| 5 | 
            +
            require 'batali'
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            if(idx = ARGV.index('--batali-cookbook-path'))
         | 
| 8 | 
            +
              _, cookbook_path = ARGV.slice!(idx, 2)
         | 
| 9 | 
            +
              cookbook_info = Batali::Origin::Path.new(:name => 'metadata', :path => File.expand_path(cookbook_path))
         | 
| 10 | 
            +
              cookbook_name = cookbook_info.units.first.name
         | 
| 11 | 
            +
              ckbk_batali = File.join(File.expand_path(cookbook_path), 'Batali')
         | 
| 12 | 
            +
              origin_batali = Batali::BFile.new(File.expand_path('./Batali'))
         | 
| 13 | 
            +
              origin_batali.cookbook.delete_if{|item| item.name == cookbook_name}
         | 
| 14 | 
            +
              if(File.exists?(ckbk_batali))
         | 
| 15 | 
            +
                ckbk_b = Batali::BFile.new(ckbk_batali)
         | 
| 16 | 
            +
                new_batali_data = MultiJson.dump(
         | 
| 17 | 
            +
                  MultiJson.load(
         | 
| 18 | 
            +
                    MultiJson.dump(ckbk_b.data)
         | 
| 19 | 
            +
                  ).to_smash.deep_merge(
         | 
| 20 | 
            +
                    MultiJson.load(
         | 
| 21 | 
            +
                      MultiJson.dump(origin_batali.data)
         | 
| 22 | 
            +
                    )
         | 
| 23 | 
            +
                  )
         | 
| 24 | 
            +
                )
         | 
| 25 | 
            +
              else
         | 
| 26 | 
            +
                origin_batali.cookbook.push(Batali::BFile::Cookbook.new(:name => cookbook_name, :path => cookbook_path))
         | 
| 27 | 
            +
                new_batali_data = MultiJson.dump(origin_batali.data)
         | 
| 28 | 
            +
              end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
              n_data = MultiJson.load(new_batali_data)
         | 
| 31 | 
            +
             | 
| 32 | 
            +
              expander = lambda do |item|
         | 
| 33 | 
            +
                if(item.is_a?(Hash))
         | 
| 34 | 
            +
                  item.keys.each do |k|
         | 
| 35 | 
            +
                    if(k == 'path')
         | 
| 36 | 
            +
                      item[k] = File.expand_path(item[k])
         | 
| 37 | 
            +
                    elsif(item[k].is_a?(Hash) || item[k].is_a?(Array))
         | 
| 38 | 
            +
                      expander.call(item[k])
         | 
| 39 | 
            +
                    end
         | 
| 40 | 
            +
                  end
         | 
| 41 | 
            +
                elsif(item.is_a?(Array))
         | 
| 42 | 
            +
                  item.each{|i| expander.call(i)}
         | 
| 43 | 
            +
                end
         | 
| 44 | 
            +
              end
         | 
| 45 | 
            +
              expander.call(n_data)
         | 
| 46 | 
            +
             | 
| 47 | 
            +
              temp_b = Bogo::EphemeralFile.new('batali-tk')
         | 
| 48 | 
            +
              temp_b.write MultiJson.dump(n_data)
         | 
| 49 | 
            +
              temp_b.flush
         | 
| 50 | 
            +
             | 
| 51 | 
            +
              ENV['KITCHEN_BATALI_FILE'] = temp_b.path
         | 
| 52 | 
            +
              ENV['KITCHEN_YAML'] = File.expand_path(
         | 
| 53 | 
            +
                File.join('.', cookbook_path, '.kitchen.yml')
         | 
| 54 | 
            +
              )
         | 
| 55 | 
            +
              puts "!! Batali test-kitchen infra-repo override for `#{cookbook_name}` @ `#{cookbook_path}`"
         | 
| 56 | 
            +
            end
         | 
| 57 | 
            +
            if(idx = ARGV.index('--batali-environment'))
         | 
| 58 | 
            +
              _, environment_name = ARGV.slice!(idx, 2)
         | 
| 59 | 
            +
              ENV['KITCHEN_BATALI_ENVIRONMENT'] = environment_name
         | 
| 60 | 
            +
              puts "!! Batali test-kitchen infra-repo override for resolution against `#{environment_name}` environment defined constraints"
         | 
| 61 | 
            +
            end
         | 
| 4 62 |  | 
| 5 63 | 
             
            # Force `kitchen` name so we don't end up with batali-tk branding
         | 
| 6 64 | 
             
            require 'thor'
         | 
| @@ -16,5 +74,10 @@ require 'kitchen' | |
| 16 74 | 
             
            require 'kitchen/cli'
         | 
| 17 75 | 
             
            require 'kitchen/errors'
         | 
| 18 76 |  | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 77 | 
            +
            cwd = Dir.pwd
         | 
| 78 | 
            +
            begin
         | 
| 79 | 
            +
              Dir.chdir(cookbook_path)
         | 
| 80 | 
            +
              Kitchen.with_friendly_errors { Kitchen::CLI.start }
         | 
| 81 | 
            +
            ensure
         | 
| 82 | 
            +
              Dir.chdir(cwd)
         | 
| 83 | 
            +
            end
         | 
    
        data/lib/batali-tk/monkey.rb
    CHANGED
    
    | @@ -3,7 +3,7 @@ module BataliTk | |
| 3 3 | 
             
              module Box
         | 
| 4 4 |  | 
| 5 5 | 
             
                def batali_file
         | 
| 6 | 
            -
                  File.join(config[:kitchen_root], "Batali")
         | 
| 6 | 
            +
                  ENV.fetch('KITCHEN_BATALI_FILE', File.join(config[:kitchen_root], "Batali"))
         | 
| 7 7 | 
             
                end
         | 
| 8 8 |  | 
| 9 9 | 
             
                def batali_prepare_cookbooks
         | 
| @@ -37,7 +37,7 @@ module BataliTk | |
| 37 37 | 
             
              module Base
         | 
| 38 38 |  | 
| 39 39 | 
             
                def batali_file
         | 
| 40 | 
            -
                  File.join(config[:kitchen_root], "Batali")
         | 
| 40 | 
            +
                  ENV.fetch('KITCHEN_BATALI_FILE', File.join(config[:kitchen_root], "Batali"))
         | 
| 41 41 | 
             
                end
         | 
| 42 42 |  | 
| 43 43 | 
             
                def batali_load_needed_dependencies!
         | 
| @@ -48,20 +48,30 @@ module Kitchen | |
| 48 48 | 
             
                      debug "Using Batali file located at: #{batali_file}"
         | 
| 49 49 | 
             
                      output = ''
         | 
| 50 50 | 
             
                      begin
         | 
| 51 | 
            -
                         | 
| 52 | 
            -
                           | 
| 53 | 
            -
             | 
| 51 | 
            +
                        FileUtils.cp(
         | 
| 52 | 
            +
                          batali_file,
         | 
| 53 | 
            +
                          File.join(
         | 
| 54 | 
            +
                            File.dirname(vendor_path),
         | 
| 55 | 
            +
                            'Batali'
         | 
| 56 | 
            +
                          )
         | 
| 57 | 
            +
                        )
         | 
| 58 | 
            +
                        Dir.chdir(File.dirname(vendor_path)) do
         | 
| 59 | 
            +
                          ::Batali::Command::Update.new(
         | 
| 60 | 
            +
                            Smash.new(
         | 
| 54 61 | 
             
                            :path => vendor_path,
         | 
| 55 62 | 
             
                            :update => {
         | 
| 56 | 
            -
                              :install => true
         | 
| 63 | 
            +
                              :install => true,
         | 
| 64 | 
            +
                              :environment => ENV['KITCHEN_BATALI_ENVIRONMENT'],
         | 
| 65 | 
            +
                              :infrastructure => false
         | 
| 57 66 | 
             
                            },
         | 
| 58 67 | 
             
                            :ui => Bogo::Ui.new(
         | 
| 59 68 | 
             
                              :app_name => 'Batali',
         | 
| 60 69 | 
             
                              :output_to => StringIO.new(output)
         | 
| 61 70 | 
             
                            ),
         | 
| 62 71 | 
             
                          ),
         | 
| 63 | 
            -
             | 
| 64 | 
            -
             | 
| 72 | 
            +
                            []
         | 
| 73 | 
            +
                          ).execute!
         | 
| 74 | 
            +
                        end
         | 
| 65 75 | 
             
                      rescue => e
         | 
| 66 76 | 
             
                        error "Batali failed to install cookbooks! #{e.class}: #{e}"
         | 
| 67 77 | 
             
                      end
         | 
    
        data/lib/batali-tk/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: batali-tk
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.2.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Chris Roberts
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2015- | 
| 11 | 
            +
            date: 2015-11-04 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: batali
         | 
| @@ -16,7 +16,7 @@ dependencies: | |
| 16 16 | 
             
                requirements:
         | 
| 17 17 | 
             
                - - ">="
         | 
| 18 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            -
                    version: 0.2. | 
| 19 | 
            +
                    version: 0.2.33
         | 
| 20 20 | 
             
                - - "<"
         | 
| 21 21 | 
             
                  - !ruby/object:Gem::Version
         | 
| 22 22 | 
             
                    version: '1'
         | 
| @@ -26,7 +26,7 @@ dependencies: | |
| 26 26 | 
             
                requirements:
         | 
| 27 27 | 
             
                - - ">="
         | 
| 28 28 | 
             
                  - !ruby/object:Gem::Version
         | 
| 29 | 
            -
                    version: 0.2. | 
| 29 | 
            +
                    version: 0.2.33
         | 
| 30 30 | 
             
                - - "<"
         | 
| 31 31 | 
             
                  - !ruby/object:Gem::Version
         | 
| 32 32 | 
             
                    version: '1'
         | 
| @@ -81,9 +81,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 81 81 | 
             
                  version: '0'
         | 
| 82 82 | 
             
            requirements: []
         | 
| 83 83 | 
             
            rubyforge_project: 
         | 
| 84 | 
            -
            rubygems_version: 2. | 
| 84 | 
            +
            rubygems_version: 2.4.8
         | 
| 85 85 | 
             
            signing_key: 
         | 
| 86 86 | 
             
            specification_version: 4
         | 
| 87 87 | 
             
            summary: Batali for test-kitchen
         | 
| 88 88 | 
             
            test_files: []
         | 
| 89 | 
            -
            has_rdoc: 
         |