bosh-workspace 0.7.0 → 0.8.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 +5 -13
- data/.ruby-version +1 -1
- data/.travis.yml +8 -0
- data/Gemfile +4 -0
- data/Guardfile +2 -2
- data/README.md +78 -39
- data/Rakefile +4 -0
- data/bosh-workspace.gemspec +4 -1
- data/lib/bosh/cli/commands/prepare.rb +74 -0
- data/lib/bosh/cli/commands/{01_make_manifest.rb → project_deployment.rb} +4 -26
- data/lib/bosh/workspace.rb +7 -3
- data/lib/bosh/workspace/helpers/dns_helper.rb +72 -0
- data/lib/bosh/workspace/helpers/project_deployment_helper.rb +8 -3
- data/lib/bosh/workspace/helpers/release_helper.rb +33 -0
- data/lib/bosh/workspace/helpers/spiff_helper.rb +1 -1
- data/lib/bosh/workspace/helpers/stemcell_helper.rb +45 -0
- data/lib/bosh/workspace/manifest_builder.rb +10 -25
- data/lib/bosh/workspace/project_deployment.rb +77 -0
- data/lib/bosh/workspace/release.rb +41 -33
- data/lib/bosh/workspace/stemcell.rb +23 -0
- data/lib/bosh/workspace/stub_file.rb +44 -0
- data/lib/bosh/workspace/version.rb +1 -1
- data/spec/assets/dns/job-properties.yml +22 -0
- data/spec/assets/dns/jobs.yml +18 -0
- data/spec/assets/dns/networks-manual.yml +19 -0
- data/spec/assets/dns/networks-no-manual.yml +18 -0
- data/spec/assets/dns/properties.yml +29 -0
- data/spec/assets/foo-boshrelease-repo.zip +0 -0
- data/spec/commands/prepare_spec.rb +99 -0
- data/spec/commands/{command_make_manifest_spec.rb → project_deployment_spec.rb} +4 -23
- data/spec/helpers/dns_helper_spec.rb +59 -0
- data/spec/helpers/project_deployment_helper_spec.rb +24 -23
- data/spec/helpers/release_helper_spec.rb +76 -0
- data/spec/helpers/spiff_helper_spec.rb +2 -2
- data/spec/helpers/stemcell_helper_spec.rb +89 -0
- data/spec/manifest_builder_spec.rb +24 -45
- data/spec/project_deployment_spec.rb +157 -0
- data/spec/release_spec.rb +39 -18
- data/spec/spec_helper.rb +9 -3
- data/spec/stemcell_spec.rb +28 -0
- data/spec/stub_file_spec.rb +74 -0
- metadata +90 -22
- data/lib/bosh/workspace/deployment_manifest.rb +0 -67
- data/lib/bosh/workspace/release_manager.rb +0 -14
- data/spec/deployment_manifest_spec.rb +0 -93
- data/spec/release_manager_spec.rb +0 -17
data/spec/spec_helper.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
|
1
|
+
require "codeclimate-test-reporter"
|
2
|
+
CodeClimate::TestReporter.start
|
2
3
|
|
3
4
|
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", __FILE__)
|
4
5
|
|
@@ -61,8 +62,8 @@ def in_home_dir(&block)
|
|
61
62
|
FileUtils.chdir(home_file, &block)
|
62
63
|
end
|
63
64
|
|
64
|
-
def get_tmp_file_path(content)
|
65
|
-
tmp_file = File.open(File.join(Dir.mktmpdir,
|
65
|
+
def get_tmp_file_path(content, file_name="tmp")
|
66
|
+
tmp_file = File.open(File.join(Dir.mktmpdir, file_name), "w")
|
66
67
|
tmp_file.write(content)
|
67
68
|
tmp_file.close
|
68
69
|
tmp_file.path
|
@@ -73,6 +74,11 @@ def asset_dir(*path)
|
|
73
74
|
File.join(assets_dir, *path)
|
74
75
|
end
|
75
76
|
|
77
|
+
def asset_file(*path)
|
78
|
+
assets_file = File.expand_path("../assets", __FILE__)
|
79
|
+
IO.read(File.join(assets_file, *path))
|
80
|
+
end
|
81
|
+
|
76
82
|
def extracted_asset_dir(name, *path)
|
77
83
|
zipped_file = asset_dir(*path)
|
78
84
|
target_dir = File.expand_path("../../tmp/#{name}", __FILE__)
|
@@ -0,0 +1,28 @@
|
|
1
|
+
describe Bosh::Workspace::Stemcell do
|
2
|
+
subject { Bosh::Workspace::Stemcell.new(stemcell, stemcells_dir) }
|
3
|
+
let(:stemcells_dir) { ".stemcells" }
|
4
|
+
let(:stemcell) { { "name" => name, "version" => version } }
|
5
|
+
let(:name) { "bosh-warden-boshlite-ubuntu-trusty-go_agent" }
|
6
|
+
let(:file_name) { "bosh-stemcell-3-warden-boshlite-ubuntu-trusty-go_agent.tgz" }
|
7
|
+
let(:version) { 3 }
|
8
|
+
|
9
|
+
describe "#name_version" do
|
10
|
+
its(:name_version) { should eq "#{name}/#{version}" }
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "#file_name" do
|
14
|
+
its(:file_name) { should eq file_name }
|
15
|
+
end
|
16
|
+
|
17
|
+
describe "#downloaded?" do
|
18
|
+
before { File.should_receive(:exists?).with(/\/#{file_name}/).and_return(true) }
|
19
|
+
its(:downloaded?) { should eq true }
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "attr readers" do
|
23
|
+
let(:file) { "#{stemcells_dir}/#{file_name}" }
|
24
|
+
%w(name version file).each do |attr|
|
25
|
+
its(attr.to_sym) { should eq eval(attr) }
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
describe Bosh::Workspace::StubFile do
|
2
|
+
let(:project_deployment) { instance_double("Bosh::Workspace::ProjectDeployment",
|
3
|
+
name: "bar",
|
4
|
+
director_uuid: "foo-bar-uuid",
|
5
|
+
stemcells: stemcells,
|
6
|
+
releases: [ { "name" => "foo", "version" => "latest", "git" => "release_repo.git" } ],
|
7
|
+
templates: ["foo.yml"],
|
8
|
+
meta: meta,
|
9
|
+
merged_file: ".deployments/foo.yml")
|
10
|
+
}
|
11
|
+
let(:meta) {{ "foo" => "bar" }}
|
12
|
+
let(:stemcells) { [ { "name" => "foo", "version" => "2"} ] }
|
13
|
+
let(:path) { "foo/.stubs/bar.yml"}
|
14
|
+
|
15
|
+
let(:stub_file) { Bosh::Workspace::StubFile.new(project_deployment) }
|
16
|
+
subject { stub_file }
|
17
|
+
|
18
|
+
describe ".create" do
|
19
|
+
let(:stub_file) { instance_double("Bosh::Workspace::StubFile") }
|
20
|
+
subject { Bosh::Workspace::StubFile.create(path, project_deployment) }
|
21
|
+
|
22
|
+
it "calls write" do
|
23
|
+
Bosh::Workspace::StubFile.should_receive(:new)
|
24
|
+
.with(project_deployment).and_return(stub_file)
|
25
|
+
stub_file.should_receive(:write).with(path)
|
26
|
+
subject
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "#write" do
|
31
|
+
it "writes yaml content" do
|
32
|
+
IO.should_receive(:write).with(path, /---\n/)
|
33
|
+
subject.write(path)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe "#content" do
|
38
|
+
subject { stub_file.content }
|
39
|
+
its(["name"]) { should eq project_deployment.name }
|
40
|
+
its(["director_uuid"]) { should eq project_deployment.director_uuid }
|
41
|
+
its(["releases"]) { should be_a(Array) }
|
42
|
+
its(["meta"]) { should be_a(Hash) }
|
43
|
+
end
|
44
|
+
|
45
|
+
describe "#releases" do
|
46
|
+
it "filters disallowed keys" do
|
47
|
+
expect(subject.releases.first).to_not include "git" => "release_repo.git"
|
48
|
+
expect(subject.releases.first).to include "name" => "foo", "version" => "latest"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
describe "#meta" do
|
53
|
+
let(:stemcell_foo) { { "name" => "foo", "version" => "2" } }
|
54
|
+
let(:stemcell_bar) { { "name" => "bar", "version" => "3" } }
|
55
|
+
|
56
|
+
context "1 stemcell" do
|
57
|
+
let(:stemcells) { [ stemcell_foo ] }
|
58
|
+
its(:meta) { should include "stemcell" => stemcell_foo }
|
59
|
+
its(:meta) { should include meta }
|
60
|
+
end
|
61
|
+
|
62
|
+
context "multiple stemcells" do
|
63
|
+
let(:stemcells) { [ stemcell_foo, stemcell_bar ] }
|
64
|
+
its(:meta) { should include "stemcells" => [ stemcell_foo, stemcell_bar ] }
|
65
|
+
its(:meta) { should include meta }
|
66
|
+
end
|
67
|
+
|
68
|
+
context "meta already containing stemcell" do
|
69
|
+
let(:meta) { { "stemcell" => stemcell_bar } }
|
70
|
+
let(:stemcells) { [ stemcell_foo ] }
|
71
|
+
its(:meta) { should include "stemcell" => stemcell_bar }
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
metadata
CHANGED
@@ -1,29 +1,71 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bosh-workspace
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ruben Koster
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-07-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bosh_cli
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 1.1722.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 1.1722.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bosh_common
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.1722.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.1722.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: semi_semantic
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 1.1.0
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.1.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: membrane
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.0.2
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.0.2
|
27
69
|
- !ruby/object:Gem::Dependency
|
28
70
|
name: git
|
29
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,14 +86,14 @@ dependencies:
|
|
44
86
|
requirements:
|
45
87
|
- - ~>
|
46
88
|
- !ruby/object:Gem::Version
|
47
|
-
version: '1.
|
89
|
+
version: '1.6'
|
48
90
|
type: :development
|
49
91
|
prerelease: false
|
50
92
|
version_requirements: !ruby/object:Gem::Requirement
|
51
93
|
requirements:
|
52
94
|
- - ~>
|
53
95
|
- !ruby/object:Gem::Version
|
54
|
-
version: '1.
|
96
|
+
version: '1.6'
|
55
97
|
- !ruby/object:Gem::Dependency
|
56
98
|
name: rspec
|
57
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -70,28 +112,28 @@ dependencies:
|
|
70
112
|
name: rspec-fire
|
71
113
|
requirement: !ruby/object:Gem::Requirement
|
72
114
|
requirements:
|
73
|
-
- -
|
115
|
+
- - '>='
|
74
116
|
- !ruby/object:Gem::Version
|
75
117
|
version: '0'
|
76
118
|
type: :development
|
77
119
|
prerelease: false
|
78
120
|
version_requirements: !ruby/object:Gem::Requirement
|
79
121
|
requirements:
|
80
|
-
- -
|
122
|
+
- - '>='
|
81
123
|
- !ruby/object:Gem::Version
|
82
124
|
version: '0'
|
83
125
|
- !ruby/object:Gem::Dependency
|
84
126
|
name: rake
|
85
127
|
requirement: !ruby/object:Gem::Requirement
|
86
128
|
requirements:
|
87
|
-
- -
|
129
|
+
- - '>='
|
88
130
|
- !ruby/object:Gem::Version
|
89
131
|
version: '0'
|
90
132
|
type: :development
|
91
133
|
prerelease: false
|
92
134
|
version_requirements: !ruby/object:Gem::Requirement
|
93
135
|
requirements:
|
94
|
-
- -
|
136
|
+
- - '>='
|
95
137
|
- !ruby/object:Gem::Version
|
96
138
|
version: '0'
|
97
139
|
- !ruby/object:Gem::Dependency
|
@@ -119,36 +161,52 @@ files:
|
|
119
161
|
- .rspec
|
120
162
|
- .ruby-gemset
|
121
163
|
- .ruby-version
|
164
|
+
- .travis.yml
|
122
165
|
- Gemfile
|
123
166
|
- Guardfile
|
124
167
|
- LICENSE.txt
|
125
168
|
- README.md
|
126
169
|
- Rakefile
|
127
170
|
- bosh-workspace.gemspec
|
128
|
-
- lib/bosh/cli/commands/
|
171
|
+
- lib/bosh/cli/commands/prepare.rb
|
172
|
+
- lib/bosh/cli/commands/project_deployment.rb
|
129
173
|
- lib/bosh/workspace.rb
|
130
|
-
- lib/bosh/workspace/
|
174
|
+
- lib/bosh/workspace/helpers/dns_helper.rb
|
131
175
|
- lib/bosh/workspace/helpers/project_deployment_helper.rb
|
176
|
+
- lib/bosh/workspace/helpers/release_helper.rb
|
132
177
|
- lib/bosh/workspace/helpers/spiff_helper.rb
|
178
|
+
- lib/bosh/workspace/helpers/stemcell_helper.rb
|
133
179
|
- lib/bosh/workspace/manifest_builder.rb
|
180
|
+
- lib/bosh/workspace/project_deployment.rb
|
134
181
|
- lib/bosh/workspace/release.rb
|
135
|
-
- lib/bosh/workspace/
|
182
|
+
- lib/bosh/workspace/stemcell.rb
|
183
|
+
- lib/bosh/workspace/stub_file.rb
|
136
184
|
- lib/bosh/workspace/version.rb
|
137
185
|
- spec/assets/bin/spiff
|
186
|
+
- spec/assets/dns/job-properties.yml
|
187
|
+
- spec/assets/dns/jobs.yml
|
188
|
+
- spec/assets/dns/networks-manual.yml
|
189
|
+
- spec/assets/dns/networks-no-manual.yml
|
190
|
+
- spec/assets/dns/properties.yml
|
138
191
|
- spec/assets/empty-manifests-repo/.keep
|
139
192
|
- spec/assets/foo-boshrelease-repo.zip
|
140
193
|
- spec/assets/manifests-repo/.manifests/foo.yml
|
141
194
|
- spec/assets/manifests-repo/deployments/bar.yml
|
142
195
|
- spec/assets/manifests-repo/deployments/foo.yml
|
143
196
|
- spec/assets/manifests-repo/templates/foo/bar.yml
|
144
|
-
- spec/commands/
|
145
|
-
- spec/
|
197
|
+
- spec/commands/prepare_spec.rb
|
198
|
+
- spec/commands/project_deployment_spec.rb
|
199
|
+
- spec/helpers/dns_helper_spec.rb
|
146
200
|
- spec/helpers/project_deployment_helper_spec.rb
|
201
|
+
- spec/helpers/release_helper_spec.rb
|
147
202
|
- spec/helpers/spiff_helper_spec.rb
|
203
|
+
- spec/helpers/stemcell_helper_spec.rb
|
148
204
|
- spec/manifest_builder_spec.rb
|
149
|
-
- spec/
|
205
|
+
- spec/project_deployment_spec.rb
|
150
206
|
- spec/release_spec.rb
|
151
207
|
- spec/spec_helper.rb
|
208
|
+
- spec/stemcell_spec.rb
|
209
|
+
- spec/stub_file_spec.rb
|
152
210
|
homepage: http://starkandwayne.com
|
153
211
|
licenses:
|
154
212
|
- MIT
|
@@ -159,33 +217,43 @@ require_paths:
|
|
159
217
|
- lib
|
160
218
|
required_ruby_version: !ruby/object:Gem::Requirement
|
161
219
|
requirements:
|
162
|
-
- -
|
220
|
+
- - '>='
|
163
221
|
- !ruby/object:Gem::Version
|
164
222
|
version: 2.0.0
|
165
223
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
166
224
|
requirements:
|
167
|
-
- -
|
225
|
+
- - '>='
|
168
226
|
- !ruby/object:Gem::Version
|
169
227
|
version: '0'
|
170
228
|
requirements: []
|
171
229
|
rubyforge_project:
|
172
|
-
rubygems_version: 2.
|
230
|
+
rubygems_version: 2.2.2
|
173
231
|
signing_key:
|
174
232
|
specification_version: 4
|
175
233
|
summary: Manage your bosh workspace
|
176
234
|
test_files:
|
177
235
|
- spec/assets/bin/spiff
|
236
|
+
- spec/assets/dns/job-properties.yml
|
237
|
+
- spec/assets/dns/jobs.yml
|
238
|
+
- spec/assets/dns/networks-manual.yml
|
239
|
+
- spec/assets/dns/networks-no-manual.yml
|
240
|
+
- spec/assets/dns/properties.yml
|
178
241
|
- spec/assets/empty-manifests-repo/.keep
|
179
242
|
- spec/assets/foo-boshrelease-repo.zip
|
180
243
|
- spec/assets/manifests-repo/.manifests/foo.yml
|
181
244
|
- spec/assets/manifests-repo/deployments/bar.yml
|
182
245
|
- spec/assets/manifests-repo/deployments/foo.yml
|
183
246
|
- spec/assets/manifests-repo/templates/foo/bar.yml
|
184
|
-
- spec/commands/
|
185
|
-
- spec/
|
247
|
+
- spec/commands/prepare_spec.rb
|
248
|
+
- spec/commands/project_deployment_spec.rb
|
249
|
+
- spec/helpers/dns_helper_spec.rb
|
186
250
|
- spec/helpers/project_deployment_helper_spec.rb
|
251
|
+
- spec/helpers/release_helper_spec.rb
|
187
252
|
- spec/helpers/spiff_helper_spec.rb
|
253
|
+
- spec/helpers/stemcell_helper_spec.rb
|
188
254
|
- spec/manifest_builder_spec.rb
|
189
|
-
- spec/
|
255
|
+
- spec/project_deployment_spec.rb
|
190
256
|
- spec/release_spec.rb
|
191
257
|
- spec/spec_helper.rb
|
258
|
+
- spec/stemcell_spec.rb
|
259
|
+
- spec/stub_file_spec.rb
|
@@ -1,67 +0,0 @@
|
|
1
|
-
module Bosh::Manifests
|
2
|
-
class DeploymentManifest
|
3
|
-
include Bosh::Cli::Validation
|
4
|
-
attr_writer :director_uuid
|
5
|
-
attr_reader :file
|
6
|
-
|
7
|
-
def initialize(file)
|
8
|
-
@file = file
|
9
|
-
err("Deployment file does not exist: #{file}") unless File.exist? @file
|
10
|
-
@manifest = Psych.load(File.read(@file))
|
11
|
-
end
|
12
|
-
|
13
|
-
def perform_validation(options = {})
|
14
|
-
if @manifest.is_a?(Hash)
|
15
|
-
unless @manifest.has_key?("name") && @manifest["name"].is_a?(String)
|
16
|
-
errors << "Manifest should contain a name"
|
17
|
-
end
|
18
|
-
|
19
|
-
unless @manifest.has_key?("director_uuid") && @manifest["director_uuid"].is_a?(String)
|
20
|
-
errors << "Manifest should contain a director_uuid"
|
21
|
-
end
|
22
|
-
|
23
|
-
unless @manifest.has_key?("templates") && @manifest["templates"].is_a?(Array)
|
24
|
-
errors << "Manifest should contain templates"
|
25
|
-
end
|
26
|
-
|
27
|
-
unless @manifest.has_key?("releases") && @manifest["releases"].is_a?(Array)
|
28
|
-
errors << "Manifest should contain releases"
|
29
|
-
end
|
30
|
-
|
31
|
-
unless @manifest.has_key?("meta") && @manifest["meta"].is_a?(Hash)
|
32
|
-
errors << "Manifest should contain meta hash"
|
33
|
-
end
|
34
|
-
else
|
35
|
-
errors << "Manifest should be a hash"
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
def director_uuid
|
40
|
-
@director_uuid || @manifest["director_uuid"]
|
41
|
-
end
|
42
|
-
|
43
|
-
def merged_file
|
44
|
-
@merged_file ||= begin
|
45
|
-
path = File.join(file_dirname, "../.deployments", file_basename)
|
46
|
-
FileUtils.mkpath File.dirname(path)
|
47
|
-
File.expand_path path
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
%w[name templates releases meta].each do |var|
|
52
|
-
define_method var do
|
53
|
-
@manifest[var]
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
private
|
58
|
-
|
59
|
-
def file_basename
|
60
|
-
File.basename(@file)
|
61
|
-
end
|
62
|
-
|
63
|
-
def file_dirname
|
64
|
-
File.dirname(@file)
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
@@ -1,14 +0,0 @@
|
|
1
|
-
module Bosh::Manifests
|
2
|
-
class ReleaseManager
|
3
|
-
def initialize(releases, work_dir)
|
4
|
-
releases_dir = File.join(work_dir, ".releases")
|
5
|
-
@releases = releases.map { |r| Release.new(r, releases_dir) }
|
6
|
-
end
|
7
|
-
|
8
|
-
def update_release_repos
|
9
|
-
@releases.each do |release|
|
10
|
-
release.checkout_current_version
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|