bosh-gen 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
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
-