Class: Bosh::Gen::Generators::ErrandGenerator
- Includes:
- Thor::Actions
- Defined in:
- lib/bosh/gen/generators/errand_generator.rb
Class Method Summary collapse
Instance Method Summary collapse
- #check_name ⇒ Object
- #check_root_is_release ⇒ Object
- #job_specification ⇒ Object
- #readme ⇒ Object
-
#template_files ⇒ Object
copy the thor template files into the bosh release to be bosh templates that’s right, templates (.tt) can become templates (.erb).
- #warn_missing_dependencies ⇒ Object
Class Method Details
.source_root ⇒ Object
12 13 14 |
# File 'lib/bosh/gen/generators/errand_generator.rb', line 12 def self.source_root File.join(File.dirname(__FILE__), "errand_generator", "templates") end |
Instance Method Details
#check_name ⇒ Object
22 23 24 |
# File 'lib/bosh/gen/generators/errand_generator.rb', line 22 def check_name raise Thor::Error.new("'#{job_name}' is not a valid BOSH id") unless job_name.bosh_valid_id? end |
#check_root_is_release ⇒ Object
16 17 18 19 20 |
# File 'lib/bosh/gen/generators/errand_generator.rb', line 16 def check_root_is_release unless File.exist?("jobs") && File.exist?("packages") raise Thor::Error.new("run inside a BOSH release project") end end |
#job_specification ⇒ Object
56 57 58 59 |
# File 'lib/bosh/gen/generators/errand_generator.rb', line 56 def job_specification config = { "name" => job_name, "packages" => dependencies, "templates" => @template_files } create_file job_dir("spec"), YAML.dump(config) end |
#readme ⇒ Object
61 62 63 |
# File 'lib/bosh/gen/generators/errand_generator.rb', line 61 def readme say_status "readme", "Add job to deploymemt manifest with lifecycle: errand" end |
#template_files ⇒ Object
copy the thor template files into the bosh release to be bosh templates that’s right, templates (.tt) can become templates (.erb)
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/bosh/gen/generators/errand_generator.rb', line 37 def template_files generator_job_templates_path = File.join(self.class.source_root, "jobs/%job_name%") directory "jobs/%job_name%", "jobs/#{job_name}" # build a hash of { 'bin/webapp_ctl.erb' => 'bin/webapp_ctl', ...} used in spec @template_files = {} FileUtils.chdir(File.join(generator_job_templates_path, "templates")) do `ls */*`.split("\n").each do |template_file| # clean up thor name convention template_file.gsub!("%job_name%", job_name) template_file.gsub!(".tt", "") # strip erb from target file target_template_file = template_file.gsub(/.erb/, '') @template_files[template_file] = target_template_file end end end |
#warn_missing_dependencies ⇒ Object
26 27 28 29 30 31 32 33 |
# File 'lib/bosh/gen/generators/errand_generator.rb', line 26 def warn_missing_dependencies dependencies.each do |d| raise Thor::Error.new("dependency '#{d}' is not a valid BOSH id") unless d.bosh_valid_id? unless File.exist?(File.join("packages", d)) say_status "warning", "missing dependency '#{d}'", :yellow end end end |