mixlib-install 2.1.0 → 2.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 71d5046b449ed3757363647374ffc39eeb05f07c
4
- data.tar.gz: ae951ab2c716f58ffa374fcfb0602bf610dfaf29
3
+ metadata.gz: 2c1268ffb5cddeeb84f766f54857d73636e7955c
4
+ data.tar.gz: b4ee9a98f94b696ab347bf05892dbdcd3e01372a
5
5
  SHA512:
6
- metadata.gz: ba5b829af49cc93b5d25ae17f617641bdf9a02cf0bb614dbb76dca789af977a5daa0603d994a414dea4639d93a8638e281af7d5d6431db686d64a2b97eef5d2b
7
- data.tar.gz: 515fedd4a41787f1dbee8e6e697846f595e2e166d4664a82fcc27d248d0de6189ebaf2436cc2e0150c48d5252fd2f08b23c03bc9614f530ac322c9c4cb276203
6
+ metadata.gz: 5cd802741f2740e5ea9b4842dea40f9be73e0309eee9b3fe9faba207a5da9bab73274dc8c685d8f3bc8ebc4084dd81e4f1bc6b53f4e8629b448a0ce3fe17a5b3
7
+ data.tar.gz: 6bbc62c1c7b4013910080bbe881479f68bfc3c5854d5e37b2ec59e62393496dcb64b585103c94668a8e1380e792623f1b177d4bbf59564f0151079b6d5176e66
@@ -30,4 +30,4 @@ env:
30
30
  # secret access key
31
31
  - secure: "Ut5ARdSnWiFVAtRZ7U+CPgihi59J/KgsMFXunJjBCYyfwaDxrIsAbjddhP3lu2d/xLtvQ26SodhnMh6VMfgBFljY1s4lgjlZU2xU5RCpXFsEhUzHjryVTEgEWYgWkGrTfvalB9gnrsRxiyOh6ZvlW7QoPED+j75FSGwj6rjGCYf/7oUa3Qlt2Pymma5ijjvemgcIEKngO7Dnh3dpFR/J4S0AZdZG6HtJvYpQ2gdvH5faFjYlKHp8W/PMuOuxq2w8Pcjw009VgOjLoFAFYhFWX3hGd0b+N1xBHJDlqaBk2UCCqaKtYrhAsgQNkFiPMmNdDUtscjKx81A8fBUJOUhUxWBFhL3QM2ymuZziPQcnikpi6EPRHRyv3P6MOSyEB2DPpzFq/tEniTBW6o9QL6dHYOaPm/CBtUJ36gEvrSEJQZyhxUTQdamjWIMOTcq1/uwjp0T28rdth0o4BoGALkNQxjaV9iPHBCNtZgPdLoG9v/5CyGwlRQaY6JSVxBHdRcD9+BfwLT84K+68NPo7xXBBar0B1kBOLExI3EHLTxaspkicM2DINicUZk+SNFdInuiByv9NT7sWWbISnk6EagxPxu8D2p1zcMh6cJ8DfFz0rws+ndGiPwInjoslSV7N8Ndi4j9nTKtv9qAImJlthzPDbHY8ghz0TrXWdtwzPet7j2s="
32
32
  # windows admin password
33
- # - secure: "lxe9NYpwV19g2mBa7aQoJX372hktSSn/g5oU1GDWYpi59YwpbYXP/Al/XXwq1ZfNzN+BlXw3tJPlVaEkfSQBi0AaWLJ6Kw5+a4tkIkwMyMPJQh+pKnADZK2pd+Hhrr7CRtnaT6w4V2sZCIfcdlLnKmez/BMNNdBn1+WAfE+aN224JK43rXxgLe4B9CcXCsUUORh6nJbB5f60D15qYokDu7ILi0RufyfyiJulqxIsXVNKtnUXOJRXZvDOPp9Y+2ur0HmVK7aiWr6JwXtODgrrDzZiWq99eR2ErDJB1AFUVMmudUykf5SWyivhvB4RStYDIIpG8EXrIhRKP+k9o4loqQBRcRBGvEMLdyupi7TzuryzK7j2XzhJFD9Eg+50Y5By87lRfvltuAJaDkRPfwIzSbWsh0Lb7YwUXI9a+bJebsteTPSFjb1YOYvkQCV2CB5pH68QInw8Hu9o2hmUkuoNWqqvVaxDI8z3peympfFlVtvTC9eOI60Tdv+pSCyQhBN0/II8FT/fylwQsOL+i8Hez9NIRdaRkx0JEpY56NloErd4An9zpY/xCAa/6JfzMWn7eD673MRVJW0u/j5IGuRAksuUlGZTQS+qudF4ZgVJaacm6qARULaesuCNbufZYtRB0Hg+GINQrUSfYKBw6BZUk2T9ZQ2zFsnF12k0yl9Qr7I="
33
+ - secure: "lxe9NYpwV19g2mBa7aQoJX372hktSSn/g5oU1GDWYpi59YwpbYXP/Al/XXwq1ZfNzN+BlXw3tJPlVaEkfSQBi0AaWLJ6Kw5+a4tkIkwMyMPJQh+pKnADZK2pd+Hhrr7CRtnaT6w4V2sZCIfcdlLnKmez/BMNNdBn1+WAfE+aN224JK43rXxgLe4B9CcXCsUUORh6nJbB5f60D15qYokDu7ILi0RufyfyiJulqxIsXVNKtnUXOJRXZvDOPp9Y+2ur0HmVK7aiWr6JwXtODgrrDzZiWq99eR2ErDJB1AFUVMmudUykf5SWyivhvB4RStYDIIpG8EXrIhRKP+k9o4loqQBRcRBGvEMLdyupi7TzuryzK7j2XzhJFD9Eg+50Y5By87lRfvltuAJaDkRPfwIzSbWsh0Lb7YwUXI9a+bJebsteTPSFjb1YOYvkQCV2CB5pH68QInw8Hu9o2hmUkuoNWqqvVaxDI8z3peympfFlVtvTC9eOI60Tdv+pSCyQhBN0/II8FT/fylwQsOL+i8Hez9NIRdaRkx0JEpY56NloErd4An9zpY/xCAa/6JfzMWn7eD673MRVJW0u/j5IGuRAksuUlGZTQS+qudF4ZgVJaacm6qARULaesuCNbufZYtRB0Hg+GINQrUSfYKBw6BZUk2T9ZQ2zFsnF12k0yl9Qr7I="
@@ -1,5 +1,8 @@
1
1
  # Change Log
2
2
 
3
+ ## [2.1.1]
4
+ - Add `mixlib-install` command line utility
5
+
3
6
  ## [2.1.0]
4
7
  - Added new attributes to ArtifactInfo
5
8
  - product_name, product_description, license, license_content, software_dependencies
data/README.md CHANGED
@@ -2,10 +2,24 @@
2
2
 
3
3
  # Mixlib::Install
4
4
 
5
- ## Usage
5
+ ## Command Line Usage
6
+ ```
7
+ $ gem install mixlib-install
8
+ ```
9
+
10
+ ```
11
+ # Download latest stable chef for current platform
12
+ $ mixlib-install download chef
13
+ ```
14
+
15
+ Run `$ mixlib-install help` for additional commands and options.
16
+
17
+ ## API Usage
6
18
 
7
19
  ### Get URL for specific platform and package version
8
20
  ```ruby
21
+ require 'mixlib/install'
22
+
9
23
  options = {
10
24
  channel: :current,
11
25
  product_name: 'chef',
data/Rakefile CHANGED
@@ -1,7 +1,7 @@
1
1
  require "bundler/gem_tasks"
2
2
  require "rspec/core/rake_task"
3
3
 
4
- task default: :ci
4
+ task default: :test
5
5
 
6
6
  desc "Run specs"
7
7
  RSpec::Core::RakeTask.new(:spec) do |spec|
@@ -22,7 +22,12 @@ desc "Run all tests"
22
22
  task test: [:style, :spec]
23
23
 
24
24
  desc "Run tests for Travis CI"
25
- task ci: [:style, :spec]
25
+ task ci: [:style, :spec, :functional]
26
+
27
+ desc "Run functional"
28
+ task "functional" do
29
+ system("bundle exec rspec functional")
30
+ end
26
31
 
27
32
  desc "Render product matrix documentation"
28
33
  task "matrix" do
@@ -6,7 +6,9 @@ ruby_block "get ip" do
6
6
  end
7
7
 
8
8
  execute "run inspec" do
9
- command lazy { "inspec exec verify.rb -t winrm://Administrator@#{node['ip']} --password '#{ENV['TF_VAR_admin_password'] || 'Pas5w0rD'}'" }
9
+ command lazy { "inspec exec verify.rb -t winrm://Administrator@#{node['ip']} --password $WINDOWS_PASSWORD" }
10
10
  cwd "#{node['chef-acceptance']['suite-dir']}/inspec"
11
- # sensitive true
11
+ environment(
12
+ "WINDOWS_PASSWORD" => ENV["TF_VAR_admin_password"] || "Pas5w0rD"
13
+ )
12
14
  end
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ Signal.trap("INT") { exit 1 }
4
+
5
+ $:.push File.expand_path("../lib", __FILE__)
6
+ $stdout.sync = true
7
+
8
+ require "mixlib/install/cli"
9
+
10
+ begin
11
+ Mixlib::Install::Cli.start(ARGV)
12
+ rescue StandardError => e
13
+ abort e.message
14
+ end
@@ -3,14 +3,12 @@
3
3
  set -evx
4
4
 
5
5
  # run unit tests
6
- /opt/chefdk/embedded/bin/bundle install && /opt/chefdk/bin/chef exec rake
6
+ /opt/chefdk/embedded/bin/bundle install && /opt/chefdk/bin/chef exec rake ci
7
7
 
8
8
  # Don't run acceptance tests on forks. The decryption keys are not available.
9
9
  if [ "${TRAVIS_REPO_SLUG}" = "chef/mixlib-install" ]; then
10
10
  # setup acceptance tests
11
11
  cd acceptance && export BUNDLE_GEMFILE=$PWD/Gemfile && /opt/chefdk/embedded/bin/bundle install && export APPBUNDLER_ALLOW_RVM=true
12
12
  # run acceptances tests and force cleanup
13
- # only testing ubuntu until issues with powershell suite resovled:
14
- # - currently no way to mask password (sensitive true) AND know what the error is if inspec fails
15
- /opt/chefdk/embedded/bin/bundle exec chef-acceptance test ubuntu --force-destroy
13
+ /opt/chefdk/embedded/bin/bundle exec chef-acceptance test --force-destroy
16
14
  fi
@@ -0,0 +1,192 @@
1
+ #
2
+ # Copyright:: Copyright (c) 2016 Chef, Inc.
3
+ # License:: Apache License, Version 2.0
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ require_relative "./spec_helper"
19
+ require "mixlib/install/cli"
20
+
21
+ describe "mixlib-install executable", :type => :aruba do
22
+ let(:args) { nil }
23
+
24
+ before(:all) do
25
+ puts "
26
+ ****************************************
27
+ TESTS ARE SLOW - DOWNLOADS PACKAGES.
28
+ ****************************************
29
+
30
+ "
31
+ end
32
+
33
+ before(:each) { run("bin/mixlib-install #{command} #{args}") }
34
+
35
+ describe "version command" do
36
+ let(:command) { "version" }
37
+
38
+ it "prints the mixlib-install version" do
39
+ require "mixlib/install/version"
40
+ expect(last_command_started).to have_output Mixlib::Install::VERSION
41
+ end
42
+ end
43
+
44
+ describe "list-versions command" do
45
+ let(:command) { "list-versions" }
46
+
47
+ context "with valid args" do
48
+ let(:args) { "chef stable" }
49
+
50
+ it "prints the versions" do
51
+ expect(last_command_started).to have_output /12.0.3/
52
+ end
53
+ end
54
+
55
+ context "with invalid args" do
56
+ let(:args) { "foo bar" }
57
+
58
+ it "returns error message" do
59
+ expect(last_command_started).to have_output /Unknown product name foo/
60
+ expect(last_command_started).to have_output /Unknown channel bar/
61
+ end
62
+ end
63
+ end
64
+
65
+ describe "install-script command" do
66
+ let(:command) { "install-script" }
67
+
68
+ context "with no args" do
69
+ it "returns shell script to stdout" do
70
+ expect(last_command_started).to have_output /end of install_package.sh/
71
+ end
72
+ end
73
+
74
+ context "with ps1 type" do
75
+ let(:args) { "-t ps1" }
76
+
77
+ it "returns powershell script to stdout" do
78
+ expect(last_command_started).to have_output /export-modulemember -function 'Install-Project','Get-ProjectMetadata' -alias 'install'/
79
+ end
80
+ end
81
+
82
+ context "with invalid type" do
83
+ let(:args) { "-t foo" }
84
+
85
+ it "errors an error" do
86
+ expect(last_command_started).to have_output /type must be one of/
87
+ end
88
+ end
89
+
90
+ context "with alternate endpoint" do
91
+ let(:args) { "--endpoint https://omnitruck-custom.chef.io" }
92
+
93
+ it "contains the new endpoint" do
94
+ expect(last_command_started).to have_output /https:\/\/omnitruck-custom.chef.io/
95
+ end
96
+ end
97
+
98
+ context "with output option" do
99
+ let(:args) { "-o script.sh" }
100
+
101
+ it "writes to a file" do
102
+ expect("script.sh").to be_an_existing_file
103
+ end
104
+ end
105
+ end
106
+
107
+ describe "download command" do
108
+ let(:command) { "download" }
109
+
110
+ context "without args" do
111
+ it "exits with required args error" do
112
+ expect(last_command_started).to have_output /"mixlib-install #{command}" was called with no arguments/
113
+ end
114
+ end
115
+
116
+ context "with chef product" do
117
+ let(:args) { "chef" }
118
+
119
+ it "downloads a chef artifact" do
120
+ expect(last_command_started).to have_output /Download saved to/
121
+ end
122
+ end
123
+
124
+ context "with url flag" do
125
+ let(:args) { "chef --url" }
126
+
127
+ it "outputs the url" do
128
+ expect(last_command_started).to have_output /https:\/\/packages.chef.io\/files\/stable\/chef/
129
+ end
130
+ end
131
+
132
+ context "with attributes arg" do
133
+ let(:args) { "chef --url --attributes" }
134
+
135
+ it "outputs the attributes" do
136
+ expect(last_command_started).to have_output /"license": "Apache-2.0"/
137
+ end
138
+ end
139
+
140
+ context "with platform arg" do
141
+ let(:args) { "chef -p ubuntu" }
142
+
143
+ it "fails with missing args error" do
144
+ expect(last_command_started).to have_output /Must provide platform version and architecture when specifying a platform/
145
+ end
146
+ end
147
+
148
+ context "with valid platform version and architecture" do
149
+ let(:args) { "chef -p ubuntu -l 14.04 -a x86_64 --attributes" }
150
+ let(:latest_version) { Mixlib::Install.available_versions("chef", "stable").last }
151
+ let(:filename) { "chef_#{latest_version}-1_amd64.deb" }
152
+
153
+ it "has the correct artifact" do
154
+ require "digest"
155
+ sha256 = Digest::SHA256.hexdigest("./tmp/aruba/#{filename}")
156
+ expect(last_command_started).to have_output /sha256/
157
+ end
158
+ end
159
+
160
+ context "with invalid platform version and architecture" do
161
+ let(:args) { "chef -p ubuntu -l 99.99 -a x86_64" }
162
+
163
+ it "returns no results" do
164
+ expect(last_command_started).to have_output /No results found./
165
+ end
166
+ end
167
+
168
+ context "with specified version" do
169
+ let(:args) { "chef -v 12.0.3 " }
170
+
171
+ it "returns the correct artifact" do
172
+ expect(last_command_started).to have_output /chef[-_]12.0.3-1/
173
+ end
174
+ end
175
+
176
+ context "with specified channel" do
177
+ let(:args) { "chef -c current " }
178
+
179
+ it "returns the correct artifact" do
180
+ expect(last_command_started).to have_output /files\/current\/chef/
181
+ end
182
+ end
183
+
184
+ context "with specified directory" do
185
+ let(:args) { "chef -d mydir " }
186
+
187
+ it "downloads to dir" do
188
+ expect(last_command_started).to have_output /Download saved to .*mydir\/chef/
189
+ end
190
+ end
191
+ end
192
+ end
@@ -0,0 +1,16 @@
1
+ require "aruba/rspec"
2
+
3
+ Aruba.configure do |config|
4
+ config.exit_timeout = 120
5
+ config.io_wait_timeout = 2
6
+ config.activate_announcer_on_command_failure = [:stderr, :stdout, :command]
7
+ end
8
+
9
+ RSpec.configure do |config|
10
+ config.filter_run focus: true
11
+ config.run_all_when_everything_filtered = true
12
+
13
+ config.expect_with :rspec do |c|
14
+ c.syntax = :expect
15
+ end
16
+ end
@@ -0,0 +1,118 @@
1
+ require "mixlib/install"
2
+ require "thor"
3
+
4
+ module Mixlib
5
+ class Install
6
+ class Cli < Thor
7
+ include Thor::Actions
8
+
9
+ desc "version", "print mixlib-install version"
10
+ def version
11
+ require "mixlib/install/version"
12
+ say Mixlib::Install::VERSION
13
+ end
14
+
15
+ desc "list-versions PRODUCT_NAME CHANNEL", "list available version for a product/channel"
16
+ def list_versions(product_name, channel)
17
+ say Mixlib::Install.available_versions(product_name, channel).join("\n")
18
+ end
19
+
20
+ desc "download PRODUCT_NAME", "download an artifact"
21
+ option :channel,
22
+ default: :stable,
23
+ aliases: ["-c"]
24
+ option :version,
25
+ default: :latest,
26
+ aliases: ["-v"]
27
+ option :directory,
28
+ default: Dir.pwd,
29
+ aliases: ["-d"]
30
+ option :platform,
31
+ aliases: ["-p"]
32
+ option :platform_version,
33
+ aliases: ["-l"]
34
+ option :architecture,
35
+ aliases: ["-a"]
36
+ option :url,
37
+ desc: "Print download URL without downloading the file",
38
+ type: :boolean
39
+ option :attributes,
40
+ desc: "Print artifact attributes",
41
+ type: :boolean
42
+ def download(product_name)
43
+ # Set mininum options
44
+ mixlib_install_options = {
45
+ channel: options[:channel].to_sym,
46
+ product_name: product_name,
47
+ product_version: options[:version],
48
+ }
49
+
50
+ # Set platform info or auto detect platform
51
+ if options[:platform]
52
+ if options[:platform_version].nil? || options[:architecture].nil?
53
+ abort "Must provide platform version and architecture when specifying a platform"
54
+ end
55
+ mixlib_install_options[:platform] = options[:platform]
56
+ mixlib_install_options[:platform_version] = options[:platform_version]
57
+ mixlib_install_options[:architecture] = options[:architecture]
58
+ else
59
+ mixlib_install_options.merge!(Mixlib::Install.detect_platform)
60
+ end
61
+
62
+ say "Querying for artifact with options:\n#{JSON.pretty_generate(mixlib_install_options)}"
63
+ artifact = Mixlib::Install.new(mixlib_install_options).artifact_info
64
+ if artifact.nil? || artifact.is_a?(Array)
65
+ abort "No results found."
66
+ end
67
+
68
+ if options[:url]
69
+ say artifact.url
70
+ else
71
+ FileUtils.mkdir_p options[:directory]
72
+ file = File.join(options[:directory], File.basename(artifact.url))
73
+
74
+ require "json"
75
+ require "net/http"
76
+
77
+ say "Starting download #{artifact.url} to #{file}"
78
+ uri = URI.parse(artifact.url)
79
+ Net::HTTP.start(uri.host) do |http|
80
+ resp = http.get(uri.path)
81
+ open(file, "wb") do |io|
82
+ io.write(resp.body)
83
+ end
84
+ end
85
+
86
+ say "Download saved to #{file}"
87
+ end
88
+
89
+ say JSON.pretty_generate(artifact.to_hash) if options[:attributes]
90
+ end
91
+
92
+ desc "install-script", "generate install bootstrap script for shell or powershell"
93
+ option :endpoint,
94
+ desc: "Alternate omnitruck endpoint"
95
+ option :file,
96
+ desc: "Write script to file",
97
+ aliases: ["-o"]
98
+ option :type,
99
+ desc: "Install script type: #{Mixlib::Install::Options::SUPPORTED_SHELL_TYPES.join(", ")}",
100
+ aliases: ["-t"],
101
+ default: "sh"
102
+ def install_script
103
+ if !Mixlib::Install::Options::SUPPORTED_SHELL_TYPES.include? options[:type].to_sym
104
+ abort "type must be one of: #{Mixlib::Install::Options::SUPPORTED_SHELL_TYPES.join(", ")}"
105
+ end
106
+ context = {}
107
+ context[:base_url] = options[:endpoint] if options[:endpoint]
108
+ script = eval("Mixlib::Install.install_#{options[:type]}(context)")
109
+ if options[:file]
110
+ File.open(options[:file], "w") { |io| io.write(script) }
111
+ say "Script written to #{options[:file]}"
112
+ else
113
+ say script
114
+ end
115
+ end
116
+ end
117
+ end
118
+ end
@@ -46,7 +46,7 @@ module Mixlib
46
46
  # and returnt the contents of the script
47
47
  if File.exist? "#{script_path}.erb"
48
48
  # Default values to use incase they are not set in the context
49
- context[:base_url] ||= "https://omnitruck.chef.io/"
49
+ context[:base_url] ||= "https://omnitruck.chef.io"
50
50
 
51
51
  context_object = OpenStruct.new(context).instance_eval { binding }
52
52
  ERB.new(File.read("#{script_path}.erb")).result(context_object)
@@ -20,7 +20,7 @@
20
20
  echo "Getting information for $project $channel $version for $platform..."
21
21
 
22
22
  metadata_filename="$tmp_dir/metadata.txt"
23
- metadata_url="<%= base_url %>$channel/$project/metadata?v=$version&p=$platform&pv=$platform_version&m=$machine"
23
+ metadata_url="<%= base_url %>/$channel/$project/metadata?v=$version&p=$platform&pv=$platform_version&m=$machine"
24
24
 
25
25
  do_download "$metadata_url" "$metadata_filename"
26
26
 
@@ -60,7 +60,7 @@ function Get-ProjectMetadata {
60
60
  Write-Verbose "Architecture: $architecture"
61
61
  Write-Verbose "Project: $project"
62
62
 
63
- $metadata_base_url = "$($channel)/$($project)/metadata"
63
+ $metadata_base_url = "/$($channel)/$($project)/metadata"
64
64
  $metadata_array = ("?v=$($version)",
65
65
  "p=$platform",
66
66
  "pv=$platform_version",
@@ -1,5 +1,5 @@
1
1
  module Mixlib
2
2
  class Install
3
- VERSION = "2.1.0"
3
+ VERSION = "2.1.1"
4
4
  end
5
5
  end
@@ -14,20 +14,22 @@ Gem::Specification.new do |spec|
14
14
  spec.homepage = "https://chef.io"
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
17
+ spec.executables = ["mixlib-install"]
18
18
  spec.require_paths = ["lib"]
19
19
 
20
20
  spec.add_dependency "artifactory"
21
- spec.add_dependency "mixlib-versioning"
22
21
  spec.add_dependency "mixlib-shellout"
22
+ spec.add_dependency "mixlib-versioning"
23
+ spec.add_dependency "thor"
23
24
 
25
+ spec.add_development_dependency "aruba"
24
26
  spec.add_development_dependency "bundler"
25
- spec.add_development_dependency "rake"
26
- spec.add_development_dependency "rspec"
27
+ spec.add_development_dependency "chefstyle"
27
28
  spec.add_development_dependency "pry"
29
+ spec.add_development_dependency "rake"
28
30
  spec.add_development_dependency "rb-readline"
31
+ spec.add_development_dependency "rspec"
32
+ spec.add_development_dependency "simplecov"
29
33
  spec.add_development_dependency "vcr"
30
34
  spec.add_development_dependency "webmock", "~> 1.0"
31
- spec.add_development_dependency "chefstyle"
32
- spec.add_development_dependency "simplecov"
33
35
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mixlib-install
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thom May
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-10-05 00:00:00.000000000 Z
12
+ date: 2016-10-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: artifactory
@@ -25,6 +25,20 @@ dependencies:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
27
  version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: mixlib-shellout
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
28
42
  - !ruby/object:Gem::Dependency
29
43
  name: mixlib-versioning
30
44
  requirement: !ruby/object:Gem::Requirement
@@ -40,7 +54,7 @@ dependencies:
40
54
  - !ruby/object:Gem::Version
41
55
  version: '0'
42
56
  - !ruby/object:Gem::Dependency
43
- name: mixlib-shellout
57
+ name: thor
44
58
  requirement: !ruby/object:Gem::Requirement
45
59
  requirements:
46
60
  - - ">="
@@ -54,7 +68,7 @@ dependencies:
54
68
  - !ruby/object:Gem::Version
55
69
  version: '0'
56
70
  - !ruby/object:Gem::Dependency
57
- name: bundler
71
+ name: aruba
58
72
  requirement: !ruby/object:Gem::Requirement
59
73
  requirements:
60
74
  - - ">="
@@ -68,7 +82,7 @@ dependencies:
68
82
  - !ruby/object:Gem::Version
69
83
  version: '0'
70
84
  - !ruby/object:Gem::Dependency
71
- name: rake
85
+ name: bundler
72
86
  requirement: !ruby/object:Gem::Requirement
73
87
  requirements:
74
88
  - - ">="
@@ -82,7 +96,7 @@ dependencies:
82
96
  - !ruby/object:Gem::Version
83
97
  version: '0'
84
98
  - !ruby/object:Gem::Dependency
85
- name: rspec
99
+ name: chefstyle
86
100
  requirement: !ruby/object:Gem::Requirement
87
101
  requirements:
88
102
  - - ">="
@@ -110,7 +124,7 @@ dependencies:
110
124
  - !ruby/object:Gem::Version
111
125
  version: '0'
112
126
  - !ruby/object:Gem::Dependency
113
- name: rb-readline
127
+ name: rake
114
128
  requirement: !ruby/object:Gem::Requirement
115
129
  requirements:
116
130
  - - ">="
@@ -124,7 +138,7 @@ dependencies:
124
138
  - !ruby/object:Gem::Version
125
139
  version: '0'
126
140
  - !ruby/object:Gem::Dependency
127
- name: vcr
141
+ name: rb-readline
128
142
  requirement: !ruby/object:Gem::Requirement
129
143
  requirements:
130
144
  - - ">="
@@ -138,21 +152,21 @@ dependencies:
138
152
  - !ruby/object:Gem::Version
139
153
  version: '0'
140
154
  - !ruby/object:Gem::Dependency
141
- name: webmock
155
+ name: rspec
142
156
  requirement: !ruby/object:Gem::Requirement
143
157
  requirements:
144
- - - "~>"
158
+ - - ">="
145
159
  - !ruby/object:Gem::Version
146
- version: '1.0'
160
+ version: '0'
147
161
  type: :development
148
162
  prerelease: false
149
163
  version_requirements: !ruby/object:Gem::Requirement
150
164
  requirements:
151
- - - "~>"
165
+ - - ">="
152
166
  - !ruby/object:Gem::Version
153
- version: '1.0'
167
+ version: '0'
154
168
  - !ruby/object:Gem::Dependency
155
- name: chefstyle
169
+ name: simplecov
156
170
  requirement: !ruby/object:Gem::Requirement
157
171
  requirements:
158
172
  - - ">="
@@ -166,7 +180,7 @@ dependencies:
166
180
  - !ruby/object:Gem::Version
167
181
  version: '0'
168
182
  - !ruby/object:Gem::Dependency
169
- name: simplecov
183
+ name: vcr
170
184
  requirement: !ruby/object:Gem::Requirement
171
185
  requirements:
172
186
  - - ">="
@@ -179,11 +193,26 @@ dependencies:
179
193
  - - ">="
180
194
  - !ruby/object:Gem::Version
181
195
  version: '0'
196
+ - !ruby/object:Gem::Dependency
197
+ name: webmock
198
+ requirement: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - "~>"
201
+ - !ruby/object:Gem::Version
202
+ version: '1.0'
203
+ type: :development
204
+ prerelease: false
205
+ version_requirements: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - "~>"
208
+ - !ruby/object:Gem::Version
209
+ version: '1.0'
182
210
  description:
183
211
  email:
184
212
  - thom@chef.io
185
213
  - patrick@chef.io
186
- executables: []
214
+ executables:
215
+ - mixlib-install
187
216
  extensions: []
188
217
  extra_rdoc_files: []
189
218
  files:
@@ -228,14 +257,18 @@ files:
228
257
  - acceptance/ubuntu_install_sh/terraform/application.tf
229
258
  - acceptance/ubuntu_install_sh/terraform/aws.tf
230
259
  - acceptance/ubuntu_install_sh/terraform/variables.tf
260
+ - bin/mixlib-install
231
261
  - ci/before-script.sh
232
262
  - ci/es-infrastructure.pem.enc
233
263
  - ci/script.sh
264
+ - functional/cli_spec.rb
265
+ - functional/spec_helper.rb
234
266
  - lib/mixlib/install.rb
235
267
  - lib/mixlib/install/artifact_info.rb
236
268
  - lib/mixlib/install/backend.rb
237
269
  - lib/mixlib/install/backend/base.rb
238
270
  - lib/mixlib/install/backend/package_router.rb
271
+ - lib/mixlib/install/cli.rb
239
272
  - lib/mixlib/install/generator.rb
240
273
  - lib/mixlib/install/generator/base.rb
241
274
  - lib/mixlib/install/generator/bourne.rb