bosh-gen 0.92.0 → 0.93.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 668c75ea5ea57e96a2d20915d4d4aaecd773e3c0
4
- data.tar.gz: e9bf3dc769566c2dc6b2d00e153ea76484e2ae87
3
+ metadata.gz: 45918f88e325e22d93f99107fdc2fead2e125813
4
+ data.tar.gz: 046050e3a5af22580cb57da6e3e89045f4f98763
5
5
  SHA512:
6
- metadata.gz: 64875d8d16a32845aba49811e9d0f1bb7137cea9ffab4fd58f31a925f951ee2f5c81892107437e1794aa6ff43d585b99f27ecbe17b20af81b60ad8cad24fcd91
7
- data.tar.gz: 8579d65a33f5450fc5822e4e81c97514a2130388a2071900072c4987da4670a151e4492f6d0b6216ecefd4b623f5965925f90a0d53b634399654e4fcee7a47a2
6
+ metadata.gz: 364abd05e67751691f519cc459f34d32d5988737f4961d9669228c6fa925575aee63563d11673c68a61374a65f9cda68c9748ffec2a484a0e322f8b20bc54588
7
+ data.tar.gz: 4ba2284c7218284b9f5dfada1fb29c7534869df3ff24f727296fd6118682465d210994862cb30be2edf2df4fcf76925845a8201ad23e11c94ee9b955f0c83fca
data/README.md CHANGED
@@ -3,6 +3,6 @@ BOSH Generators
3
3
 
4
4
  Generators for creating and sharing BOSH releases.
5
5
 
6
- New in 0.90: `bosh2` support - single `manifests/thing.yml` deployment file
6
+ New in 0.90: `bosh` support - single `manifests/thing.yml` deployment file
7
7
 
8
- NOTE: this `bosh2` branch is under construction. README will be re-written as we get towards v1.0
8
+ NOTE: this `bosh` branch is under construction. README will be re-written as we get towards v1.0
@@ -0,0 +1,16 @@
1
+ module Bosh
2
+ module Gen
3
+ class BoshCli
4
+ # BoshCli.run("add-blob #{source_path} #{target_path}")
5
+ def self.run(command)
6
+ `#{cli_name} #{command}`
7
+ end
8
+
9
+ def self.cli_name
10
+ @@cli_name ||= begin
11
+ `which bosh2`.size == 0 ? "bosh" : "bosh2"
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -1,5 +1,7 @@
1
1
  require "thor"
2
2
 
3
+ require "fileutils"
4
+ require "bosh/gen/bosh-cli-commands"
3
5
  require "bosh/gen/bosh-config"
4
6
  require "bosh/gen/core-ext"
5
7
 
@@ -13,20 +13,20 @@ module Bosh::Gen
13
13
  raise Thor::Error.new("run inside a BOSH release project")
14
14
  end
15
15
  end
16
-
16
+
17
17
  def check_job_path_is_valid
18
18
  unless File.exist?(source_job_path)
19
19
  raise Thor::Error.new("source job path does not exist")
20
20
  end
21
21
  end
22
-
22
+
23
23
  def check_job_path_is_a_job
24
24
  parent_dir = File.basename(File.dirname(source_job_path))
25
25
  unless parent_dir == "jobs"
26
26
  raise Thor::Error.new("source jobs path is not a BOSH job")
27
27
  end
28
28
  end
29
-
29
+
30
30
  def check_job_path_within_release
31
31
  FileUtils.chdir(source_release_path) do
32
32
  unless File.exist?("jobs") && File.exist?("packages")
@@ -34,55 +34,64 @@ module Bosh::Gen
34
34
  end
35
35
  end
36
36
  end
37
-
37
+
38
38
  def using_source_release_for_templates
39
39
  source_paths << File.join(source_release_path)
40
40
  end
41
41
 
42
42
  def copy_job_dir
43
- directory "jobs/#{source_job_name}", "jobs/#{target_job_name}"
43
+ directory "jobs/#{source_job_name}", "jobs/#{target_job_name}", mode: :preserve
44
44
  end
45
-
45
+
46
46
  def detect_dependent_packages
47
47
  @packages = YAML.load_file(job_dir("spec"))["packages"]
48
48
  end
49
-
49
+
50
50
  def copy_dependent_packages
51
51
  @packages.each {|package| directory "packages/#{package}"}
52
52
  end
53
-
53
+
54
54
  def copy_package_spec_files
55
55
  @blobs = false
56
56
  @packages.each do |package|
57
57
  spec = source_file("packages", package, "spec")
58
- files = YAML.load_file(spec)["files"]
59
-
60
- files.each do |relative_file|
61
- if File.exist?(source_file("src", relative_file))
62
- copy_file "src/#{relative_file}"
63
- elsif File.exist?(source_file("blobs", relative_file))
64
- copy_file "blobs/#{relative_file}"
58
+ file_globs = YAML.load_file(spec)["files"]
59
+
60
+ file_globs.each do |file_glob|
61
+ source_files = Dir.glob(File.join(source_release_path, "src", file_glob))
62
+ source_files.each do |source_path|
63
+ target_path = source_path.scan(%r{/blobs/(.*)}).flatten.first
64
+ copy_file(File.join("src", target_path))
65
+ end
66
+ end
67
+
68
+ file_globs.each do |file_glob|
69
+ source_files = Dir.glob(File.join(source_release_path, "blobs", file_glob))
70
+ source_files.each do |source_path|
71
+ target_path = source_path.scan(%r{/blobs/(.*)}).flatten.first
72
+ BoshCli.run "add-blob #{source_path} #{target_path}"
73
+ say_status "add-blob", target_path
65
74
  @blobs = true
66
75
  end
67
76
  end
68
77
  end
69
78
  end
70
-
79
+
71
80
  def readme
72
81
  if @blobs
73
- say_status "readme", "Upload blobs with 'bosh upload blobs'"
82
+ say_status "readme", "Upload blobs with 'bosh upload-blobs'"
74
83
  end
75
84
  end
76
-
85
+
77
86
  private
78
87
  def source_release_path
79
88
  File.expand_path(File.join(source_job_path, "..", ".."))
80
89
  end
81
-
90
+
82
91
  def source_job_name
83
92
  File.basename(source_job_path)
84
93
  end
85
-
94
+
86
95
  def target_job_name
87
96
  source_job_name
88
97
  end
@@ -90,7 +99,7 @@ module Bosh::Gen
90
99
  def job_dir(path="")
91
100
  File.join("jobs", target_job_name, path)
92
101
  end
93
-
102
+
94
103
  def source_file(*path)
95
104
  File.join(source_release_path, *path)
96
105
  end
@@ -7,13 +7,13 @@ module Bosh::Gen
7
7
  include Thor::Actions
8
8
 
9
9
  argument :source_package_path
10
-
10
+
11
11
  def check_root_is_release
12
12
  unless File.exist?("jobs") && File.exist?("packages")
13
13
  raise Thor::Error.new("run inside a BOSH release project")
14
14
  end
15
15
  end
16
-
16
+
17
17
  def check_package_path_within_release
18
18
  FileUtils.chdir(source_release_path) do
19
19
  unless File.exist?("jobs") && File.exist?("packages")
@@ -21,14 +21,14 @@ module Bosh::Gen
21
21
  end
22
22
  end
23
23
  end
24
-
24
+
25
25
  def check_package_path_is_a_package
26
26
  parent_dir = File.basename(File.dirname(source_package_path))
27
27
  unless parent_dir == "packages"
28
28
  raise Thor::Error.new("source package path is not a BOSH package")
29
29
  end
30
30
  end
31
-
31
+
32
32
  def using_source_release_for_templates
33
33
  source_paths << File.join(source_release_path)
34
34
  end
@@ -39,51 +39,62 @@ module Bosh::Gen
39
39
  @packages = [source_package_name]
40
40
  @packages << spec["packages"] if spec["packages"]
41
41
  end
42
-
42
+
43
43
  def copy_dependent_packages
44
- @packages.each {|package| directory "packages/#{package}"}
44
+ @packages.each do |package|
45
+ directory "packages/#{package}", mode: :preserve
46
+ end
45
47
  end
46
48
 
47
49
  def copy_package_spec_files
48
50
  @blobs = false
49
51
  @packages.each do |package|
50
52
  spec = source_file("packages", package, "spec")
51
- files = YAML.load_file(spec)["files"]
52
-
53
- files.each do |relative_file|
54
- if File.exist?(source_file("src", relative_file))
55
- copy_file "src/#{relative_file}"
56
- elsif File.exist?(source_file("blobs", relative_file))
57
- copy_file "blobs/#{relative_file}"
53
+ file_globs = YAML.load_file(spec)["files"]
54
+
55
+ file_globs.each do |file_glob|
56
+ source_files = Dir.glob(File.join(source_release_path, "src", file_glob))
57
+ source_files.each do |source_path|
58
+ target_path = source_path.scan(%r{/blobs/(.*)}).flatten.first
59
+ copy_file(File.join("src", target_path))
60
+ end
61
+ end
62
+
63
+ file_globs.each do |file_glob|
64
+ source_files = Dir.glob(File.join(source_release_path, "blobs", file_glob))
65
+ source_files.each do |source_path|
66
+ target_path = source_path.scan(%r{/blobs/(.*)}).flatten.first
67
+ BoshCli.run "add-blob #{source_path} #{target_path}"
68
+ say_status "add-blob", target_path
58
69
  @blobs = true
59
70
  end
60
71
  end
61
72
  end
62
73
  end
63
-
74
+
64
75
  def readme
65
76
  if @blobs
66
77
  say_status "readme", "Upload blobs with 'bosh upload blobs'"
67
78
  end
68
79
  end
69
-
80
+
70
81
  private
71
82
  def source_release_path
72
83
  File.expand_path(File.join(source_package_path, "..", ".."))
73
84
  end
74
-
85
+
75
86
  def source_package_name
76
87
  File.basename(source_package_path)
77
88
  end
78
-
89
+
79
90
  def package_dir(path="")
80
91
  File.join("packages", source_package_name, path)
81
92
  end
82
-
93
+
83
94
  def source_package_dir(path="")
84
95
  File.join(source_release_path, "packages", source_package_name, path)
85
96
  end
86
-
97
+
87
98
  def source_file(*path)
88
99
  File.join(source_release_path, *path)
89
100
  end
@@ -7,7 +7,7 @@ This BOSH release and deployment manifest deploy a cluster of <%= project_name %
7
7
  ```
8
8
  export BOSH_ENVIRONMENT=<bosh-alias>
9
9
  export BOSH_DEPLOYMENT=<%= project_name %>
10
- bosh2 deploy manifests/<%= project_name %>.yml --vars-store tmp/creds.yml
10
+ bosh deploy manifests/<%= project_name %>.yml --vars-store tmp/creds.yml
11
11
  ```
12
12
 
13
13
  If your BOSH has Credhub, then you can omit `--vars-store` flag. It is used to generate any passwords/credentials/certificates required by `manifests/<%= project_name %>.yml`.
@@ -18,9 +18,9 @@ If your BOSH has Credhub, then you can omit `--vars-store` flag. It is used to g
18
18
  As a developer of this release, create new releases, upload and deploy them:
19
19
 
20
20
  ```
21
- bosh2 create-release --force && \
22
- bosh2 -n upload-release && \
23
- bosh2 deploy manifests/<%= project_name %>.yml --vars-store tmp/creds.yml
21
+ bosh create-release --force && \
22
+ bosh -n upload-release && \
23
+ bosh deploy manifests/<%= project_name %>.yml --vars-store tmp/creds.yml
24
24
  ```
25
25
 
26
26
  If your BOSH has Credhub, then you can omit `--vars-store` flag. It is used to generate any passwords/credentials/certificates required by `manifests/<%= project_name %>.yml`.
@@ -1,5 +1,5 @@
1
1
  module Bosh
2
2
  module Gen
3
- VERSION = "0.92.0"
3
+ VERSION = "0.93.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bosh-gen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.92.0
4
+ version: 0.93.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dr Nic Williams
@@ -159,6 +159,7 @@ files:
159
159
  - bin/bosh-gen
160
160
  - bosh-gen.gemspec
161
161
  - lib/bosh/gen.rb
162
+ - lib/bosh/gen/bosh-cli-commands.rb
162
163
  - lib/bosh/gen/bosh-config.rb
163
164
  - lib/bosh/gen/cli.rb
164
165
  - lib/bosh/gen/core-ext.rb