mixlib-install 2.1.0 → 2.1.1
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/.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
|