bosh-workspace 0.9.0.rc2 → 0.9.0.rc3
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/lib/bosh/workspace/release.rb +33 -19
- data/lib/bosh/workspace/version.rb +1 -1
- data/spec/assets/foo-boshrelease-repo-new-structure.zip +0 -0
- data/spec/release_spec.rb +20 -10
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 51bf8a5f27e3c24ee4ef726151e656ddd79a15e6
|
4
|
+
data.tar.gz: 1b12be1ab651f544abe8ed1ec01346425ecd8c8d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f6a551fbb230b60f22a2fe19bbe304faca18751e7934591de500d0f1c092e2d83f05f300c456d3107acff5e2a69096c52cca95d778fc9f0bc2d1393a12b31015
|
7
|
+
data.tar.gz: f7a83e2266fcbbac54d2794ad391ddc66fa478a20cba79b0e047086cd52cb8c582896d1e36e2e4fa1789bf9fd6aca1c6f3286ad72317c31d1781f48476ac48cf
|
@@ -5,13 +5,13 @@ module Bosh::Workspace
|
|
5
5
|
def initialize(release, releases_dir)
|
6
6
|
@name = release["name"]
|
7
7
|
@ref = release["ref"]
|
8
|
-
@spec_version = release["version"]
|
8
|
+
@spec_version = release["version"].to_s
|
9
9
|
@git_url = release["git"]
|
10
10
|
@repo_dir = File.join(releases_dir, @name)
|
11
11
|
end
|
12
12
|
|
13
13
|
def update_repo
|
14
|
-
repo.checkout ref ||
|
14
|
+
repo.checkout ref || release[:commit], strategy: :force
|
15
15
|
end
|
16
16
|
|
17
17
|
def manifest_file
|
@@ -19,7 +19,7 @@ module Bosh::Workspace
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def manifest
|
22
|
-
|
22
|
+
release[:manifest]
|
23
23
|
end
|
24
24
|
|
25
25
|
def name_version
|
@@ -27,11 +27,7 @@ module Bosh::Workspace
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def version
|
30
|
-
|
31
|
-
unless final_releases[@spec_version.to_i]
|
32
|
-
err("Could not find version: #{@spec_version} for release: #{@name}")
|
33
|
-
end
|
34
|
-
@spec_version.to_i
|
30
|
+
release[:version]
|
35
31
|
end
|
36
32
|
|
37
33
|
def ref
|
@@ -49,25 +45,43 @@ module Bosh::Workspace
|
|
49
45
|
File.directory?(dir) && !File.symlink?(dir)
|
50
46
|
end
|
51
47
|
|
48
|
+
def releases_dir
|
49
|
+
new_style_repo ? "releases/#{@name}" : "releases"
|
50
|
+
end
|
51
|
+
|
52
|
+
def releases_tree
|
53
|
+
repo.lookup(repo.head.target.tree.path(releases_dir)[:oid])
|
54
|
+
end
|
55
|
+
|
52
56
|
# transforms releases/foo-1.yml, releases/bar-2.yml to:
|
53
|
-
# { "1"
|
57
|
+
# [ { version: "1", commit: ee8d52f5d, manifest: releases/foo-1.yml } ]
|
54
58
|
def final_releases
|
55
59
|
@final_releases ||= begin
|
56
|
-
|
60
|
+
final_releases = {}
|
61
|
+
releases_tree.walk_blobs(:preorder) do |_, entry|
|
62
|
+
path = File.join(releases_dir, entry[:name])
|
63
|
+
blame = Rugged::Blame.new(repo, path)[0]
|
64
|
+
time = blame[:final_signature][:time]
|
65
|
+
commit_id = blame[:final_commit_id]
|
66
|
+
manifest = blame[:orig_path]
|
67
|
+
version = entry[:name][/#{@name}-(.+)\.yml/, 1]
|
68
|
+
final_releases[time] = {
|
69
|
+
version: version, manifest: manifest, commit: commit_id
|
70
|
+
}
|
71
|
+
end
|
57
72
|
|
58
|
-
|
59
|
-
.reject { |f| f[/index.yml/] }
|
60
|
-
.map { |dir| File.join(releases_dir, File.basename(dir)) }
|
61
|
-
.map { |version| [version[/(\d+)/].to_i, version] }]
|
73
|
+
final_releases.sort_by { |k, _| k }
|
74
|
+
.map { |a| a[1] }.reject { |f| f[:manifest][/index.yml/] }
|
62
75
|
end
|
63
76
|
end
|
64
77
|
|
65
|
-
def
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
78
|
+
def release
|
79
|
+
return final_releases.last if @spec_version == "latest"
|
80
|
+
release = final_releases.find { |v| v[:version] == @spec_version }
|
81
|
+
unless release
|
82
|
+
err("Could not find version: #{@spec_version} for release: #{@name}")
|
70
83
|
end
|
84
|
+
release
|
71
85
|
end
|
72
86
|
end
|
73
87
|
end
|
Binary file
|
data/spec/release_spec.rb
CHANGED
@@ -2,7 +2,7 @@ describe Bosh::Workspace::Release do
|
|
2
2
|
include Bosh::Workspace::GitCredenialsHelper
|
3
3
|
let(:name) { "foo" }
|
4
4
|
let(:release) { load_release(release_data) }
|
5
|
-
let(:version) { 3 }
|
5
|
+
let(:version) { "3" }
|
6
6
|
let(:release_data) { { "name" => name, "version" => version, "git" => repo } }
|
7
7
|
let(:releases_dir) { File.join(asset_dir("manifests-repo"), ".releases") }
|
8
8
|
let(:templates) { Dir[File.join(releases_dir, name, "templates/*.yml")].to_s }
|
@@ -18,7 +18,8 @@ describe Bosh::Workspace::Release do
|
|
18
18
|
|
19
19
|
describe "#update_repo" do
|
20
20
|
subject do
|
21
|
-
|
21
|
+
# puts `cd #{File.join(releases_dir, name)} && git checkout origin/HEAD && git log`
|
22
|
+
Dir[File.join(releases_dir, name, "releases/**/foo*.yml")].to_s
|
22
23
|
end
|
23
24
|
|
24
25
|
context "latest version" do
|
@@ -27,24 +28,33 @@ describe Bosh::Workspace::Release do
|
|
27
28
|
let(:version) { "latest" }
|
28
29
|
|
29
30
|
it "checks out repo" do
|
30
|
-
expect(subject).to match(/foo-
|
31
|
+
expect(subject).to match(/releases\/foo\/foo-12.yml/)
|
31
32
|
end
|
33
|
+
end
|
32
34
|
|
33
|
-
|
34
|
-
|
35
|
+
context "version from before new structure" do
|
36
|
+
before { release.update_repo }
|
37
|
+
|
38
|
+
let(:version) { "11" }
|
39
|
+
|
40
|
+
it "checks out repo" do
|
41
|
+
expect(subject).to match(/releases\/foo-11.yml/)
|
35
42
|
end
|
36
43
|
end
|
37
44
|
end
|
38
45
|
|
39
46
|
describe "attributes" do
|
47
|
+
let(:version) { "12" }
|
40
48
|
subject { release }
|
41
49
|
its(:name) { should eq name }
|
42
50
|
its(:git_url) { should eq repo }
|
43
51
|
its(:repo_dir) { should match(/\/#{name}$/) }
|
44
|
-
its(:manifest_file) { should match(/\/#{name}-#{version}.yml$/) }
|
45
52
|
its(:manifest) { should match "releases/#{name}/#{name}-#{version}.yml$" }
|
46
53
|
its(:name_version) { should eq "#{name}/#{version}" }
|
47
54
|
its(:version) { should eq version }
|
55
|
+
its(:manifest_file) do
|
56
|
+
should match(/\/releases\/#{name}\/#{name}-#{version}.yml$/)
|
57
|
+
end
|
48
58
|
end
|
49
59
|
end
|
50
60
|
|
@@ -102,7 +112,7 @@ describe Bosh::Workspace::Release do
|
|
102
112
|
end
|
103
113
|
end
|
104
114
|
|
105
|
-
context "updated version
|
115
|
+
context "updated version" do
|
106
116
|
let(:version) { "11" }
|
107
117
|
|
108
118
|
it "checks out file with multiple commits" do
|
@@ -135,7 +145,7 @@ describe Bosh::Workspace::Release do
|
|
135
145
|
let(:version) { "11" }
|
136
146
|
|
137
147
|
before do
|
138
|
-
load_release("name" => "
|
148
|
+
load_release("name" => "foo", "version" => 2, "git" => repo).update_repo
|
139
149
|
end
|
140
150
|
|
141
151
|
it "version 11" do
|
@@ -212,7 +222,7 @@ describe Bosh::Workspace::Release do
|
|
212
222
|
let(:version) { "11" }
|
213
223
|
|
214
224
|
before do
|
215
|
-
load_release("name" => "
|
225
|
+
load_release("name" => "foo", "version" => 2, "git" => repo).update_repo
|
216
226
|
end
|
217
227
|
|
218
228
|
it "version 11" do
|
@@ -245,7 +255,7 @@ describe Bosh::Workspace::Release do
|
|
245
255
|
its(:manifest_file) { should match(/\/#{name}-#{version}.yml$/) }
|
246
256
|
its(:manifest) { should match "releases/#{name}-#{version}.yml$" }
|
247
257
|
its(:name_version) { should eq "#{name}/#{version}" }
|
248
|
-
its(:version) { should eq version }
|
258
|
+
its(:version) { should eq version.to_s }
|
249
259
|
end
|
250
260
|
end
|
251
261
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bosh-workspace
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.0.
|
4
|
+
version: 0.9.0.rc3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ruben Koster
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-04-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bosh_cli
|