lib/pdk/generators/module.rb in pdk-0.1.0 vs lib/pdk/generators/module.rb in pdk-0.2.0
- old
+ new
@@ -7,35 +7,39 @@
require 'pdk/module/metadata'
require 'pdk/module/templatedir'
require 'pdk/cli/exec'
require 'pdk/cli/input'
require 'pdk/util'
+require 'pdk/util/version'
module PDK
module Generate
class Module
- DEFAULT_TEMPLATE = 'https://github.com/puppetlabs/pdk-module-template'
+ DEFAULT_TEMPLATE = 'https://github.com/puppetlabs/pdk-module-template'.freeze
- def self.invoke(opts={})
+ def self.invoke(opts = {})
defaults = {
+ 'name' => "#{Etc.getlogin}-#{opts[:name]}",
'version' => '0.1.0',
'dependencies' => [
- { 'name' => 'puppetlabs-stdlib', 'version_requirement' => '>= 1.0.0' }
- ]
+ { 'name' => 'puppetlabs-stdlib', 'version_requirement' => '>= 4.13.1 < 5.0.0' },
+ ],
}
- defaults['license'] = opts[:license] if opts.has_key? :license
+ defaults['license'] = opts[:license] if opts.key? :license
target_dir = File.expand_path(opts[:target_dir])
- if File.exists?(target_dir)
- raise PDK::CLI::FatalError, _("The destination directory '%{dir}' already exists") % {:dir => target_dir}
+ if File.exist?(target_dir)
+ raise PDK::CLI::FatalError, _("The destination directory '%{dir}' already exists") % { dir: target_dir }
end
metadata = PDK::Module::Metadata.new(defaults)
module_interview(metadata, opts) unless opts[:'skip-interview'] # @todo Build way to get info by answers file
+ metadata.update!('pdk-version' => PDK::Util::Version.version_string)
+
temp_target_dir = PDK::Util.make_tmpdir_name('pdk-module-target')
prepare_module_directory(temp_target_dir)
template_url = opts.fetch(:'template-url', DEFAULT_TEMPLATE)
@@ -65,73 +69,73 @@
File.join(target_dir, 'templates'),
].each do |dir|
begin
FileUtils.mkdir_p(dir)
rescue SystemCallError
- raise PDK::CLI::FatalError, _("Unable to create directory '%{dir}'") % {:dir => dir}
+ raise PDK::CLI::FatalError, _("Unable to create directory '%{dir}'") % { dir: dir }
end
end
end
- def self.module_interview(metadata, opts={})
+ def self.module_interview(metadata, opts = {})
puts _(
- "We need to create a metadata.json file for this module. Please answer the " +
- "following questions; if the question is not applicable to this module, feel free " +
- "to leave it blank."
+ 'We need to create a metadata.json file for this module. Please answer the ' \
+ 'following questions; if the question is not applicable to this module, feel free ' \
+ 'to leave it blank.',
)
begin
- puts ""
- forge_user = PDK::CLI::Input.get(_("What is your Puppet Forge username?"), Etc.getlogin)
+ puts ''
+ forge_user = PDK::CLI::Input.get(_('What is your Puppet Forge username?'), metadata.data['author'])
metadata.update!('name' => "#{forge_user}-#{opts[:name]}")
rescue StandardError => e
- PDK.logger.error(_("We're sorry, we could not parse your module name: %{message}") % {:message => e.message})
+ PDK.logger.error(_("We're sorry, we could not parse your module name: %{message}") % { message: e.message })
retry
end
begin
- puts "\n" + _("Puppet uses Semantic Versioning (semver.org) to version modules.")
- module_version = PDK::CLI::Input.get(_("What version is this module?"), metadata.data['version'])
+ puts "\n" + _('Puppet uses Semantic Versioning (semver.org) to version modules.')
+ module_version = PDK::CLI::Input.get(_('What version is this module?'), metadata.data['version'])
metadata.update!('version' => module_version)
rescue StandardError => e
- PDK.logger.error(_("We're sorry, we could not parse that as a Semantic Version: %{message}") % {message: e.message})
+ PDK.logger.error(_("We're sorry, we could not parse that as a Semantic Version: %{message}") % { message: e.message })
retry
end
- puts ""
- module_author = PDK::CLI::Input.get(_("Who wrote this module?"), metadata.data['author'])
+ puts ''
+ module_author = PDK::CLI::Input.get(_('Who wrote this module?'), metadata.data['author'])
metadata.update!('author' => module_author)
- unless opts.has_key?(:license)
- puts ""
- module_license = PDK::CLI::Input.get(_("What license does this module code fall under?"), metadata.data['license'])
+ unless opts.key?(:license)
+ puts ''
+ module_license = PDK::CLI::Input.get(_('What license does this module code fall under?'), metadata.data['license'])
metadata.update!('license' => module_license)
end
- puts ""
- module_summary = PDK::CLI::Input.get(_("How would you describe this module in a single sentence?"))
+ puts ''
+ module_summary = PDK::CLI::Input.get(_('How would you describe this module in a single sentence?'), metadata.data['summary'])
metadata.update!('summary' => module_summary)
- puts ""
- module_source = PDK::CLI::Input.get(_("Where is this module's source code repository?"))
+ puts ''
+ module_source = PDK::CLI::Input.get(_("Where is this module's source code repository?"), metadata.data['source'])
metadata.update!('source' => module_source)
- puts ""
- module_page = PDK::CLI::Input.get(_("Where can others go to learn more about this module?"), metadata.data['project_page'])
+ puts ''
+ module_page = PDK::CLI::Input.get(_('Where can others go to learn more about this module?'), metadata.data['project_page'])
metadata.update!('project_page' => module_page)
- puts ""
- module_issues = PDK::CLI::Input.get(_("Where can others go to file issues about this module?"), metadata.data['issues_url'])
+ puts ''
+ module_issues = PDK::CLI::Input.get(_('Where can others go to file issues about this module?'), metadata.data['issues_url'])
metadata.update!('issues_url' => module_issues)
puts
puts '-' * 40
puts metadata.to_json
puts '-' * 40
puts
- if PDK::CLI::Input.get(_("About to generate this module; continue?"), 'Y') !~ /^y(es)?$/i
- puts _("Aborting...")
+ unless PDK::CLI::Input.get(_('About to generate this module; continue?'), 'Y') =~ %r{^y(es)?$}i # rubocop:disable Style/GuardClause
+ puts _('Aborting...')
exit 0
end
end
end
end