lib/pdk/module/convert.rb in pdk-1.17.0 vs lib/pdk/module/convert.rb in pdk-1.18.0
- old
+ new
@@ -24,10 +24,11 @@
stage_changes!
unless update_manager.changes?
if adding_tests?
add_tests!
+ print_result 'Convert completed'
else
require 'pdk/report'
PDK::Report.default_target.puts(_('No changes required.'))
end
@@ -51,22 +52,19 @@
)
continue = PDK::CLI::Util.prompt_for_yes(_('Do you want to continue and make these changes to your module?'))
return unless continue
end
- # Remove these files straight away as these changes are not something that the user needs to review.
- if needs_bundle_update?
- update_manager.unlink_file('Gemfile.lock')
- update_manager.unlink_file(File.join('.bundle', 'config'))
- end
+ # Remove these files straight away as these changes are not something
+ # that the user needs to review.
+ update_manager.unlink_file('Gemfile.lock')
+ update_manager.unlink_file(File.join('.bundle', 'config'))
update_manager.sync_changes!
- if needs_bundle_update?
- require 'pdk/util/bundler'
- PDK::Util::Bundler.ensure_bundle!
- end
+ require 'pdk/util/bundler'
+ PDK::Util::Bundler.ensure_bundle!
add_tests! if adding_tests?
print_result 'Convert completed'
end
@@ -86,53 +84,73 @@
def adding_tests?
add_tests? && missing_tests?
end
def missing_tests?
- test_generators.any? { |gen| gen.can_run? }
+ !available_test_generators.empty?
end
- def test_generators
+ def available_test_generators
+ # Only select generators which can run and have no pre-existing files
+ test_generators.select do |gen|
+ if gen.can_run?
+ gen.template_files.none? { |_, dst_path| PDK::Util::Filesystem.exist?(File.join(gen.context.root_path, dst_path)) }
+ else
+ false
+ end
+ end
+ end
+
+ def test_generators(context = PDK.context)
return @test_generators unless @test_generators.nil?
require 'pdk/util/puppet_strings'
test_gens = PDK::Util::PuppetStrings.all_objects.map do |generator, objects|
(objects || []).map do |obj|
- generator.new(module_dir, obj['name'], spec_only: true)
+ generator.new(context, obj['name'], spec_only: true)
end
end
@test_generators = test_gens.flatten
end
- def add_tests!
- test_generators.each do |gen|
- gen.run if gen.can_run?
+ def stage_tests!(manager)
+ available_test_generators.each do |gen|
+ gen.stage_changes(manager)
end
+ manager
end
- def needs_bundle_update?
- update_manager.changed?('Gemfile')
+ def add_tests!
+ update_manager.clear!
+ stage_tests!(update_manager)
+
+ if update_manager.changes?
+ update_manager.sync_changes!
+ print_summary
+ else
+ PDK::Report.default_target.puts(_('No test changes required.'))
+ end
end
- def stage_changes!
+ def stage_changes!(context = PDK.context)
require 'pdk/util/filesystem'
metadata_path = File.join(module_dir, 'metadata.json')
- PDK::Module::TemplateDir.with(template_uri, nil, true) do |templates|
- new_metadata = update_metadata(metadata_path, templates.metadata)
- templates.module_metadata = new_metadata.data unless new_metadata.nil?
-
+ PDK::Template.with(template_uri, context) do |template_dir|
+ new_metadata = update_metadata(metadata_path, template_dir.metadata)
if options[:noop] && new_metadata.nil?
update_manager.add_file(metadata_path, '')
elsif PDK::Util::Filesystem.file?(metadata_path)
update_manager.modify_file(metadata_path, new_metadata.to_json)
else
update_manager.add_file(metadata_path, new_metadata.to_json)
end
- templates.render do |relative_file_path, file_content, file_status|
+ # new_metadata == nil when creating a new module but with --noop@
+ module_name = new_metadata.nil? ? 'new-module' : new_metadata.data['name']
+ template_dir.render_new_module(module_name) do |relative_file_path, file_content, file_status|
absolute_file_path = File.join(module_dir, relative_file_path)
case file_status
when :unmanage
PDK.logger.debug(_("skipping '%{path}'") % { path: absolute_file_path })
when :delete