bosh-gen 0.5.0 → 0.6.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.
data/ChangeLog.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Change Log
2
2
 
3
+ ## v0.6.0
4
+
5
+ Added:
6
+
7
+ * `extract` - extract a job and its dependent packages to the current release
8
+
3
9
  ## v0.5.0
4
10
 
5
11
  * `job` - takes a COMMAND argument
data/lib/bosh/gen/cli.rb CHANGED
@@ -68,6 +68,13 @@ module Bosh
68
68
  require 'bosh/gen/generators/job_template_generator'
69
69
  Bosh::Gen::Generators::JobTemplateGenerator.start([job_name, file_path])
70
70
  end
71
+
72
+ desc "extract SOURCE_RELEASE_PATH SOURCE_JOB_NAME [JOB_NAME]", "Extracts a job from another release and all its dependent packages and source"
73
+ def extract(source_release_path, source_job_name, target_job_name=nil)
74
+ target_job_name ||= source_job_name
75
+ require 'bosh/gen/generators/extract_job_generator'
76
+ Bosh::Gen::Generators::ExtractJobGenerator.start([source_release_path, source_job_name, target_job_name])
77
+ end
71
78
 
72
79
  desc "manifest NAME PATH UUID", "Creates a deployment manifest based on the release located at PATH"
73
80
  method_option :force, :type => :boolean, :desc => "Force override existing target manifest file"
@@ -0,0 +1,59 @@
1
+ require 'yaml'
2
+ require 'thor/group'
3
+
4
+ module Bosh::Gen
5
+ module Generators
6
+ class ExtractJobGenerator < Thor::Group
7
+ include Thor::Actions
8
+
9
+ argument :source_release_path
10
+ argument :source_job_name
11
+ argument :job_name
12
+
13
+ def check_root_is_release
14
+ unless File.exist?("jobs") && File.exist?("packages")
15
+ raise Thor::Error.new("run inside a BOSH release project")
16
+ end
17
+ end
18
+
19
+ def using_source_release_for_templates
20
+ source_paths << File.join(source_release_path)
21
+ end
22
+
23
+ def copy_job_dir
24
+ directory "jobs/#{source_job_name}", "jobs/#{job_name}"
25
+ end
26
+
27
+ def detect_dependent_packages
28
+ @packages = YAML.load_file(job_dir("spec"))["packages"]
29
+ end
30
+
31
+ def copy_dependent_packages
32
+ @packages.each {|package| directory "packages/#{package}"}
33
+ end
34
+
35
+ def copy_dependent_sources
36
+ @blobs = false
37
+ @packages.each do |package|
38
+ directory "src/#{package}" if File.exist?(File.join(source_release_path, "src", package))
39
+ if File.exist?(File.join(source_release_path, "blobs", package))
40
+ directory "blobs/#{package}"
41
+ @blobs = true
42
+ end
43
+ end
44
+ end
45
+
46
+ def readme
47
+ if @blobs
48
+ say_status "readme", "Upload blobs with 'bosh upload blobs'"
49
+ end
50
+ end
51
+
52
+ private
53
+ def job_dir(path="")
54
+ File.join("jobs", job_name, path)
55
+ end
56
+
57
+ end
58
+ end
59
+ end
@@ -52,10 +52,6 @@ module Bosh::Gen
52
52
  create_file job_dir("spec"), YAML.dump(config)
53
53
  end
54
54
 
55
- def show_todo
56
- puts File.read(File.join(destination_root, "jobs", job_name, "TODO.md"))
57
- end
58
-
59
55
  private
60
56
  def filenames
61
57
  files.map {|f| File.basename(f) }
@@ -1,5 +1,5 @@
1
1
  module Bosh
2
2
  module Gen
3
- VERSION = "0.5.0"
3
+ VERSION = "0.6.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.5.0
4
+ version: 0.6.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -127,12 +127,11 @@ files:
127
127
  - lib/bosh/gen.rb
128
128
  - lib/bosh/gen/cli.rb
129
129
  - lib/bosh/gen/generators/deployment_manifest_generator.rb
130
+ - lib/bosh/gen/generators/extract_job_generator.rb
130
131
  - lib/bosh/gen/generators/job_generator.rb
131
132
  - lib/bosh/gen/generators/job_generator/templates/.gitkeep
132
- - lib/bosh/gen/generators/job_generator/templates/jobs/%job_name%/TODO.md.tt
133
133
  - lib/bosh/gen/generators/job_generator/templates/jobs/%job_name%/monit.tt
134
134
  - lib/bosh/gen/generators/job_generator/templates/jobs/%job_name%/templates/%job_name%_ctl.tt
135
- - lib/bosh/gen/generators/job_generator/templates/jobs/%job_name%_rubyrack/TODO.md.tt
136
135
  - lib/bosh/gen/generators/job_generator/templates/jobs/%job_name%_rubyrack/monit.tt
137
136
  - lib/bosh/gen/generators/job_generator/templates/jobs/%job_name%_rubyrack/templates/%job_name%_ctl.tt
138
137
  - lib/bosh/gen/generators/job_template_generator.rb
@@ -172,7 +171,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
172
171
  version: '0'
173
172
  segments:
174
173
  - 0
175
- hash: -3354968755098444003
174
+ hash: 3145463727882526892
176
175
  required_rubygems_version: !ruby/object:Gem::Requirement
177
176
  none: false
178
177
  requirements:
@@ -181,7 +180,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
181
180
  version: '0'
182
181
  segments:
183
182
  - 0
184
- hash: -3354968755098444003
183
+ hash: 3145463727882526892
185
184
  requirements: []
186
185
  rubyforge_project:
187
186
  rubygems_version: 1.8.23
@@ -1,4 +0,0 @@
1
- Next step for <%= job_name %> job:
2
-
3
- * Replace "`exec /var/vcap/packages/redis/bin/EXECUTABLE_SERVER`" in jobs/<%= job_name %>/templates/<%= job_name %>_ctl
4
-