lib/pdk/generators/module.rb in pdk-0.5.0 vs lib/pdk/generators/module.rb in pdk-0.6.0
- old
+ new
@@ -22,10 +22,22 @@
if File.exist?(target_dir)
raise PDK::CLI::FatalError, _("The destination directory '%{dir}' already exists") % { dir: target_dir }
end
+ parent_dir = File.dirname(target_dir)
+
+ begin
+ test_file = File.join(parent_dir, '.pdk-test-writable')
+ File.open(test_file, 'w') { |f| f.write('This file was created by the Puppet Development Kit to test if this folder was writable, you can safely remove this file.') }
+ FileUtils.rm_f(test_file)
+ rescue Errno::EACCES
+ raise PDK::CLI::FatalError, _("You do not have permission to write to '%{parent_dir}'") % {
+ parent_dir: parent_dir,
+ }
+ end
+
metadata = prepare_metadata(opts)
temp_target_dir = PDK::Util.make_tmpdir_name('pdk-module-target')
prepare_module_directory(temp_target_dir)
@@ -48,11 +60,19 @@
end
end
PDK.answers.update!('template-url' => template_url)
- FileUtils.mv(temp_target_dir, target_dir)
+ begin
+ FileUtils.mv(temp_target_dir, target_dir)
+ rescue Errno::EACCES => e
+ raise PDK::CLI::FatalError, _("Failed to move '%{source}' to '%{target}': %{message}") % {
+ source: temp_target_dir,
+ target: target_dir,
+ message: e.message,
+ }
+ end
end
def self.username_from_login
login = Etc.getlogin || ''
login_clean = login.gsub(%r{[^0-9a-z]}i, '')
@@ -95,12 +115,15 @@
File.join(target_dir, 'manifests'),
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 }
+ rescue SystemCallError => e
+ raise PDK::CLI::FatalError, _("Unable to create directory '%{dir}': %{message}") % {
+ dir: dir,
+ message: e.message,
+ }
end
end
end
def self.module_interview(metadata, opts = {})
@@ -163,10 +186,10 @@
help: _('A web site with a public bug tracker for your module.'),
default: metadata.data['issues_url'],
},
]
- prompt = TTY::Prompt.new
+ prompt = TTY::Prompt.new(help_color: :cyan)
interview = PDK::CLI::Util::Interview.new(prompt)
questions.reject! { |q| q[:name] == 'license' } if opts.key?(:license)