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 +4 -4
- data/.travis.yml +1 -1
- data/CHANGELOG.md +3 -0
- data/README.md +15 -1
- data/Rakefile +7 -2
- data/acceptance/powershell_install_ps1/.acceptance/acceptance-cookbook/recipes/verify.rb +4 -2
- data/bin/mixlib-install +14 -0
- data/ci/script.sh +2 -4
- data/functional/cli_spec.rb +192 -0
- data/functional/spec_helper.rb +16 -0
- data/lib/mixlib/install/cli.rb +118 -0
- data/lib/mixlib/install/generator/base.rb +1 -1
- data/lib/mixlib/install/generator/bourne/scripts/fetch_metadata.sh.erb +1 -1
- data/lib/mixlib/install/generator/powershell/scripts/get_project_metadata.ps1.erb +1 -1
- data/lib/mixlib/install/version.rb +1 -1
- data/mixlib-install.gemspec +8 -6
- metadata +49 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2c1268ffb5cddeeb84f766f54857d73636e7955c
|
4
|
+
data.tar.gz: b4ee9a98f94b696ab347bf05892dbdcd3e01372a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5cd802741f2740e5ea9b4842dea40f9be73e0309eee9b3fe9faba207a5da9bab73274dc8c685d8f3bc8ebc4084dd81e4f1bc6b53f4e8629b448a0ce3fe17a5b3
|
7
|
+
data.tar.gz: 6bbc62c1c7b4013910080bbe881479f68bfc3c5854d5e37b2ec59e62393496dcb64b585103c94668a8e1380e792623f1b177d4bbf59564f0151079b6d5176e66
|
data/.travis.yml
CHANGED
@@ -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
|
-
|
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="
|
data/CHANGELOG.md
CHANGED
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: :
|
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
|
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
|
-
|
11
|
+
environment(
|
12
|
+
"WINDOWS_PASSWORD" => ENV["TF_VAR_admin_password"] || "Pas5w0rD"
|
13
|
+
)
|
12
14
|
end
|
data/bin/mixlib-install
ADDED
@@ -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
|
data/ci/script.sh
CHANGED
@@ -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
|
-
|
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
|
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 = "
|
63
|
+
$metadata_base_url = "/$($channel)/$($project)/metadata"
|
64
64
|
$metadata_array = ("?v=$($version)",
|
65
65
|
"p=$platform",
|
66
66
|
"pv=$platform_version",
|
data/mixlib-install.gemspec
CHANGED
@@ -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 =
|
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 "
|
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.
|
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-
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
155
|
+
name: rspec
|
142
156
|
requirement: !ruby/object:Gem::Requirement
|
143
157
|
requirements:
|
144
|
-
- - "
|
158
|
+
- - ">="
|
145
159
|
- !ruby/object:Gem::Version
|
146
|
-
version: '
|
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: '
|
167
|
+
version: '0'
|
154
168
|
- !ruby/object:Gem::Dependency
|
155
|
-
name:
|
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:
|
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
|