pdk-akerl 1.8.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/CHANGELOG.md +826 -0
- data/LICENSE +201 -0
- data/README.md +133 -0
- data/exe/pdk +10 -0
- data/lib/pdk.rb +10 -0
- data/lib/pdk/answer_file.rb +121 -0
- data/lib/pdk/cli.rb +113 -0
- data/lib/pdk/cli/build.rb +76 -0
- data/lib/pdk/cli/bundle.rb +42 -0
- data/lib/pdk/cli/convert.rb +41 -0
- data/lib/pdk/cli/errors.rb +23 -0
- data/lib/pdk/cli/exec.rb +246 -0
- data/lib/pdk/cli/exec_group.rb +67 -0
- data/lib/pdk/cli/module.rb +14 -0
- data/lib/pdk/cli/module/build.rb +14 -0
- data/lib/pdk/cli/module/generate.rb +45 -0
- data/lib/pdk/cli/new.rb +17 -0
- data/lib/pdk/cli/new/class.rb +32 -0
- data/lib/pdk/cli/new/defined_type.rb +30 -0
- data/lib/pdk/cli/new/module.rb +41 -0
- data/lib/pdk/cli/new/provider.rb +27 -0
- data/lib/pdk/cli/new/task.rb +31 -0
- data/lib/pdk/cli/test.rb +12 -0
- data/lib/pdk/cli/test/unit.rb +88 -0
- data/lib/pdk/cli/update.rb +32 -0
- data/lib/pdk/cli/util.rb +193 -0
- data/lib/pdk/cli/util/command_redirector.rb +26 -0
- data/lib/pdk/cli/util/interview.rb +63 -0
- data/lib/pdk/cli/util/option_normalizer.rb +53 -0
- data/lib/pdk/cli/util/option_validator.rb +56 -0
- data/lib/pdk/cli/validate.rb +124 -0
- data/lib/pdk/generate.rb +11 -0
- data/lib/pdk/generate/defined_type.rb +49 -0
- data/lib/pdk/generate/module.rb +318 -0
- data/lib/pdk/generate/provider.rb +82 -0
- data/lib/pdk/generate/puppet_class.rb +48 -0
- data/lib/pdk/generate/puppet_object.rb +288 -0
- data/lib/pdk/generate/task.rb +86 -0
- data/lib/pdk/i18n.rb +4 -0
- data/lib/pdk/logger.rb +28 -0
- data/lib/pdk/module.rb +21 -0
- data/lib/pdk/module/build.rb +214 -0
- data/lib/pdk/module/convert.rb +209 -0
- data/lib/pdk/module/metadata.rb +193 -0
- data/lib/pdk/module/templatedir.rb +313 -0
- data/lib/pdk/module/update.rb +111 -0
- data/lib/pdk/module/update_manager.rb +210 -0
- data/lib/pdk/report.rb +112 -0
- data/lib/pdk/report/event.rb +357 -0
- data/lib/pdk/template_file.rb +89 -0
- data/lib/pdk/tests/unit.rb +213 -0
- data/lib/pdk/util.rb +271 -0
- data/lib/pdk/util/bundler.rb +253 -0
- data/lib/pdk/util/filesystem.rb +12 -0
- data/lib/pdk/util/git.rb +74 -0
- data/lib/pdk/util/puppet_version.rb +242 -0
- data/lib/pdk/util/ruby_version.rb +147 -0
- data/lib/pdk/util/vendored_file.rb +88 -0
- data/lib/pdk/util/version.rb +42 -0
- data/lib/pdk/util/windows.rb +13 -0
- data/lib/pdk/util/windows/api_types.rb +57 -0
- data/lib/pdk/util/windows/file.rb +36 -0
- data/lib/pdk/util/windows/string.rb +16 -0
- data/lib/pdk/validate.rb +14 -0
- data/lib/pdk/validate/base_validator.rb +209 -0
- data/lib/pdk/validate/metadata/metadata_json_lint.rb +86 -0
- data/lib/pdk/validate/metadata/metadata_syntax.rb +109 -0
- data/lib/pdk/validate/metadata_validator.rb +30 -0
- data/lib/pdk/validate/puppet/puppet_lint.rb +67 -0
- data/lib/pdk/validate/puppet/puppet_syntax.rb +112 -0
- data/lib/pdk/validate/puppet_validator.rb +30 -0
- data/lib/pdk/validate/ruby/rubocop.rb +77 -0
- data/lib/pdk/validate/ruby_validator.rb +29 -0
- data/lib/pdk/validate/tasks/metadata_lint.rb +126 -0
- data/lib/pdk/validate/tasks/name.rb +88 -0
- data/lib/pdk/validate/tasks_validator.rb +33 -0
- data/lib/pdk/version.rb +4 -0
- data/locales/config.yaml +21 -0
- data/locales/pdk.pot +1283 -0
- metadata +304 -0
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'tty-spinner'
|
2
|
+
require 'tty-which'
|
3
|
+
|
4
|
+
require 'pdk/util'
|
5
|
+
|
6
|
+
module PDK
|
7
|
+
module CLI
|
8
|
+
class ExecGroup
|
9
|
+
def initialize(message, opts = {})
|
10
|
+
@options = opts.merge(PDK::CLI::Util.spinner_opts_for_platform)
|
11
|
+
|
12
|
+
if PDK::CLI::Util.interactive?
|
13
|
+
@spinner = if parallel?
|
14
|
+
TTY::Spinner::Multi.new("[:spinner] #{message}", @options)
|
15
|
+
else
|
16
|
+
TTY::Spinner.new("[:spinner] #{message}", @options)
|
17
|
+
end
|
18
|
+
@spinner.auto_spin
|
19
|
+
end
|
20
|
+
|
21
|
+
@threads_or_procs = []
|
22
|
+
@exit_codes = []
|
23
|
+
end
|
24
|
+
|
25
|
+
def parallel?
|
26
|
+
@options[:parallel].nil? ? true : @options[:parallel]
|
27
|
+
end
|
28
|
+
|
29
|
+
def register(&block)
|
30
|
+
raise PDK::CLI::FatalError, 'No block registered' unless block_given?
|
31
|
+
|
32
|
+
@threads_or_procs << if parallel?
|
33
|
+
Thread.new do
|
34
|
+
GettextSetup.initialize(File.absolute_path('../../../locales', File.dirname(__FILE__)))
|
35
|
+
GettextSetup.negotiate_locale!(GettextSetup.candidate_locales)
|
36
|
+
@exit_codes << yield
|
37
|
+
end
|
38
|
+
else
|
39
|
+
block
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def add_spinner(message, opts = {})
|
44
|
+
return unless PDK::CLI::Util.interactive?
|
45
|
+
@spinner.register("[:spinner] #{message}", @options.merge(opts).merge(PDK::CLI::Util.spinner_opts_for_platform))
|
46
|
+
end
|
47
|
+
|
48
|
+
def exit_code
|
49
|
+
if parallel?
|
50
|
+
@threads_or_procs.each(&:join)
|
51
|
+
else
|
52
|
+
@exit_codes = @threads_or_procs.map(&:call)
|
53
|
+
end
|
54
|
+
|
55
|
+
exit_code = @exit_codes.max
|
56
|
+
|
57
|
+
if exit_code.zero? && @spinner
|
58
|
+
@spinner.success
|
59
|
+
elsif @spinner
|
60
|
+
@spinner.error
|
61
|
+
end
|
62
|
+
|
63
|
+
exit_code
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module PDK::CLI
|
2
|
+
@module_cmd = @base_cmd.define_command do
|
3
|
+
name 'module'
|
4
|
+
usage _('module [options]')
|
5
|
+
summary _('Provide CLI-backwards compatibility to the puppet module tool.')
|
6
|
+
description _('This command is only for reminding you how to accomplish tasks with the PDK, when you were previously doing them with the puppet module command.')
|
7
|
+
default_subcommand 'help'
|
8
|
+
end
|
9
|
+
|
10
|
+
@module_cmd.add_command Cri::Command.new_basic_help
|
11
|
+
end
|
12
|
+
|
13
|
+
require 'pdk/cli/module/build'
|
14
|
+
require 'pdk/cli/module/generate'
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'tty-prompt'
|
2
|
+
|
3
|
+
module PDK::CLI
|
4
|
+
@module_build_cmd = @module_cmd.define_command do
|
5
|
+
name 'build'
|
6
|
+
usage _('build')
|
7
|
+
summary _('This command is now \'pdk build\'.')
|
8
|
+
|
9
|
+
run do |_opts, _args, _cmd|
|
10
|
+
PDK.logger.warn(_('Modules are built using the ‘pdk build’ command.'))
|
11
|
+
exit 1
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'tty-prompt'
|
2
|
+
|
3
|
+
module PDK::CLI
|
4
|
+
@module_generate_cmd = @module_cmd.define_command do
|
5
|
+
name 'generate'
|
6
|
+
usage _('generate [options] <module_name>')
|
7
|
+
summary _('This command is now \'pdk new module\'.')
|
8
|
+
|
9
|
+
PDK::CLI.template_url_option(self)
|
10
|
+
PDK::CLI.skip_interview_option(self)
|
11
|
+
|
12
|
+
run do |opts, args, _cmd|
|
13
|
+
require 'pdk/generate/module'
|
14
|
+
|
15
|
+
module_name = args[0]
|
16
|
+
|
17
|
+
if module_name.nil? || module_name.empty?
|
18
|
+
puts command.help
|
19
|
+
exit 1
|
20
|
+
end
|
21
|
+
|
22
|
+
PDK.logger.info(_('New modules are created using the ‘pdk new module’ command.'))
|
23
|
+
prompt = TTY::Prompt.new(help_color: :cyan)
|
24
|
+
redirect = PDK::CLI::Util::CommandRedirector.new(prompt)
|
25
|
+
redirect.target_command('pdk new module')
|
26
|
+
answer = redirect.run
|
27
|
+
|
28
|
+
if answer
|
29
|
+
module_name_parts = module_name.split('-', 2)
|
30
|
+
if module_name_parts.size > 1
|
31
|
+
opts[:username] = module_name_parts[0]
|
32
|
+
opts[:module_name] = module_name_parts[1]
|
33
|
+
else
|
34
|
+
opts[:module_name] = module_name
|
35
|
+
end
|
36
|
+
opts[:target_dir] = opts[:module_name]
|
37
|
+
|
38
|
+
PDK.logger.info(_('Creating new module: %{modname}') % { modname: module_name })
|
39
|
+
PDK::Generate::Module.invoke(opts)
|
40
|
+
else
|
41
|
+
exit 1
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
data/lib/pdk/cli/new.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
module PDK::CLI
|
2
|
+
@new_cmd = @base_cmd.define_command do
|
3
|
+
name 'new'
|
4
|
+
usage _('new <thing> [options]')
|
5
|
+
summary _('create a new module, etc.')
|
6
|
+
description _('Creates a new <thing> using relevant options.')
|
7
|
+
default_subcommand 'help'
|
8
|
+
end
|
9
|
+
|
10
|
+
@new_cmd.add_command Cri::Command.new_basic_help
|
11
|
+
end
|
12
|
+
|
13
|
+
require 'pdk/cli/new/class'
|
14
|
+
require 'pdk/cli/new/defined_type'
|
15
|
+
require 'pdk/cli/new/module'
|
16
|
+
require 'pdk/cli/new/provider'
|
17
|
+
require 'pdk/cli/new/task'
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module PDK::CLI
|
2
|
+
@new_class_cmd = @new_cmd.define_command do
|
3
|
+
name 'class'
|
4
|
+
usage _('class [options] <class_name>')
|
5
|
+
summary _('Create a new class named <class_name> using given options')
|
6
|
+
|
7
|
+
PDK::CLI.template_url_option(self)
|
8
|
+
|
9
|
+
run do |opts, args, _cmd|
|
10
|
+
require 'pdk/generate/puppet_class'
|
11
|
+
|
12
|
+
PDK::CLI::Util.ensure_in_module!(
|
13
|
+
message: _('Classes can only be created from inside a valid module directory.'),
|
14
|
+
log_level: :info,
|
15
|
+
)
|
16
|
+
|
17
|
+
class_name = args[0]
|
18
|
+
module_dir = Dir.pwd
|
19
|
+
|
20
|
+
if class_name.nil? || class_name.empty?
|
21
|
+
puts command.help
|
22
|
+
exit 1
|
23
|
+
end
|
24
|
+
|
25
|
+
unless Util::OptionValidator.valid_class_name?(class_name)
|
26
|
+
raise PDK::CLI::ExitWithError, _("'%{name}' is not a valid class name") % { name: class_name }
|
27
|
+
end
|
28
|
+
|
29
|
+
PDK::Generate::PuppetClass.new(module_dir, class_name, opts).run
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module PDK::CLI
|
2
|
+
@new_define_cmd = @new_cmd.define_command do
|
3
|
+
name 'defined_type'
|
4
|
+
usage _('defined_type [options] <name>')
|
5
|
+
summary _('Create a new defined type named <name> using given options')
|
6
|
+
|
7
|
+
PDK::CLI.template_url_option(self)
|
8
|
+
|
9
|
+
run do |opts, args, _cmd|
|
10
|
+
PDK::CLI::Util.ensure_in_module!(
|
11
|
+
message: _('Defined types can only be created from inside a valid module directory.'),
|
12
|
+
log_level: :info,
|
13
|
+
)
|
14
|
+
|
15
|
+
defined_type_name = args[0]
|
16
|
+
module_dir = Dir.pwd
|
17
|
+
|
18
|
+
if defined_type_name.nil? || defined_type_name.empty?
|
19
|
+
puts command.help
|
20
|
+
exit 1
|
21
|
+
end
|
22
|
+
|
23
|
+
unless Util::OptionValidator.valid_defined_type_name?(defined_type_name)
|
24
|
+
raise PDK::CLI::ExitWithError, _("'%{name}' is not a valid defined type name") % { name: defined_type_name }
|
25
|
+
end
|
26
|
+
|
27
|
+
PDK::Generate::DefinedType.new(module_dir, defined_type_name, opts).run
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module PDK::CLI
|
2
|
+
@new_module_cmd = @new_cmd.define_command do
|
3
|
+
name 'module'
|
4
|
+
usage _('module [options] [module_name] [target_dir]')
|
5
|
+
summary _('Create a new module named [module_name] using given options')
|
6
|
+
|
7
|
+
PDK::CLI.template_url_option(self)
|
8
|
+
PDK::CLI.skip_interview_option(self)
|
9
|
+
PDK::CLI.full_interview_option(self)
|
10
|
+
|
11
|
+
option nil, 'license', _('Specifies the license this module is written under. ' \
|
12
|
+
"This should be a identifier from https://spdx.org/licenses/. Common values are 'Apache-2.0', 'MIT', or 'proprietary'."), argument: :required
|
13
|
+
option nil, 'skip-bundle-install', _('Do not automatically run `bundle install` after creating the module.'), hidden: true
|
14
|
+
|
15
|
+
run do |opts, args, _cmd|
|
16
|
+
require 'pdk/generate/module'
|
17
|
+
|
18
|
+
module_name = args[0]
|
19
|
+
target_dir = args[1]
|
20
|
+
|
21
|
+
if opts[:'skip-interview'] && opts[:'full-interview']
|
22
|
+
PDK.logger.info _('Ignoring --full-interview and continuing with --skip-interview.')
|
23
|
+
opts[:'full-interview'] = false
|
24
|
+
end
|
25
|
+
|
26
|
+
unless module_name.nil? || module_name.empty?
|
27
|
+
module_name_parts = module_name.split('-', 2)
|
28
|
+
if module_name_parts.size > 1
|
29
|
+
opts[:username] = module_name_parts[0]
|
30
|
+
opts[:module_name] = module_name_parts[1]
|
31
|
+
else
|
32
|
+
opts[:module_name] = module_name
|
33
|
+
end
|
34
|
+
opts[:target_dir] = target_dir.nil? ? opts[:module_name] : target_dir
|
35
|
+
end
|
36
|
+
|
37
|
+
PDK.logger.info(_('Creating new module: %{modname}') % { modname: module_name })
|
38
|
+
PDK::Generate::Module.invoke(opts)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module PDK::CLI
|
2
|
+
@new_provider_cmd = @new_cmd.define_command do
|
3
|
+
name 'provider'
|
4
|
+
usage _('provider [options] <name>')
|
5
|
+
summary _('[experimental] Create a new ruby provider named <name> using given options')
|
6
|
+
|
7
|
+
PDK::CLI.template_url_option(self)
|
8
|
+
|
9
|
+
run do |opts, args, _cmd|
|
10
|
+
PDK::CLI::Util.ensure_in_module!
|
11
|
+
|
12
|
+
provider_name = args[0]
|
13
|
+
module_dir = Dir.pwd
|
14
|
+
|
15
|
+
if provider_name.nil? || provider_name.empty?
|
16
|
+
puts command.help
|
17
|
+
exit 1
|
18
|
+
end
|
19
|
+
|
20
|
+
unless Util::OptionValidator.valid_provider_name?(provider_name)
|
21
|
+
raise PDK::CLI::ExitWithError, _("'%{name}' is not a valid provider name") % { name: provider_name }
|
22
|
+
end
|
23
|
+
|
24
|
+
PDK::Generate::Provider.new(module_dir, provider_name, opts).run
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module PDK::CLI
|
2
|
+
@new_task_cmd = @new_cmd.define_command do
|
3
|
+
name 'task'
|
4
|
+
usage _('task [options] <name>')
|
5
|
+
summary _('Create a new task named <name> using given options')
|
6
|
+
|
7
|
+
PDK::CLI.template_url_option(self)
|
8
|
+
option nil, :description, _('A short description of the purpose of the task'), argument: :required
|
9
|
+
|
10
|
+
run do |opts, args, _cmd|
|
11
|
+
PDK::CLI::Util.ensure_in_module!(
|
12
|
+
message: _('Tasks can only be created from inside a valid module directory.'),
|
13
|
+
log_level: :info,
|
14
|
+
)
|
15
|
+
|
16
|
+
task_name = args[0]
|
17
|
+
module_dir = Dir.pwd
|
18
|
+
|
19
|
+
if task_name.nil? || task_name.empty?
|
20
|
+
puts command.help
|
21
|
+
exit 1
|
22
|
+
end
|
23
|
+
|
24
|
+
unless Util::OptionValidator.valid_task_name?(task_name)
|
25
|
+
raise PDK::CLI::ExitWithError, _("'%{name}' is not a valid task name") % { name: task_name }
|
26
|
+
end
|
27
|
+
|
28
|
+
PDK::Generate::Task.new(module_dir, task_name, opts).run
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/pdk/cli/test.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
|
2
|
+
module PDK::CLI
|
3
|
+
@test_cmd = @base_cmd.define_command do
|
4
|
+
name 'test'
|
5
|
+
usage _('test [subcommand] [options]')
|
6
|
+
summary _('Run tests.')
|
7
|
+
default_subcommand 'help'
|
8
|
+
end
|
9
|
+
@test_cmd.add_command Cri::Command.new_basic_help
|
10
|
+
end
|
11
|
+
|
12
|
+
require 'pdk/cli/test/unit'
|
@@ -0,0 +1,88 @@
|
|
1
|
+
require 'pdk/cli/util/option_validator'
|
2
|
+
require 'pdk/report'
|
3
|
+
|
4
|
+
module PDK::CLI
|
5
|
+
@test_unit_cmd = @test_cmd.define_command do
|
6
|
+
name 'unit'
|
7
|
+
usage _('unit [options]')
|
8
|
+
summary _('Run unit tests.')
|
9
|
+
|
10
|
+
PDK::CLI.puppet_version_options(self)
|
11
|
+
PDK::CLI.puppet_dev_option(self)
|
12
|
+
flag nil, :list, _('List all available unit test files.')
|
13
|
+
flag nil, :parallel, _('Run unit tests in parallel.')
|
14
|
+
flag :v, :verbose, _('More verbose --list output. Displays a list of examples in each unit test file.')
|
15
|
+
flag :c, 'clean-fixtures', _('Clean up downloaded fixtures after the test run.')
|
16
|
+
|
17
|
+
option nil, :tests, _('Specify a comma-separated list of unit test files to run.'), argument: :required, default: '' do |values|
|
18
|
+
PDK::CLI::Util::OptionValidator.comma_separated_list?(values)
|
19
|
+
end
|
20
|
+
|
21
|
+
# TODO
|
22
|
+
# option nil, :runner_options, _("options to pass through to the actual test-runner"), argument: :required
|
23
|
+
|
24
|
+
run do |opts, _args, _cmd|
|
25
|
+
require 'pdk/tests/unit'
|
26
|
+
|
27
|
+
PDK::CLI::Util.validate_puppet_version_opts(opts)
|
28
|
+
|
29
|
+
PDK::CLI::Util.ensure_in_module!(
|
30
|
+
message: _('Unit tests can only be run from inside a valid module directory.'),
|
31
|
+
log_level: :info,
|
32
|
+
)
|
33
|
+
|
34
|
+
PDK::CLI::Util.module_version_check
|
35
|
+
|
36
|
+
report = nil
|
37
|
+
|
38
|
+
if opts[:list]
|
39
|
+
examples = PDK::Test::Unit.list
|
40
|
+
if examples.empty?
|
41
|
+
puts _('No unit test files with examples were found.')
|
42
|
+
else
|
43
|
+
puts _('Unit Test Files:')
|
44
|
+
files = examples.map { |example| example[:file_path] }
|
45
|
+
files.uniq.each do |file|
|
46
|
+
puts _(file)
|
47
|
+
|
48
|
+
next unless opts[:verbose]
|
49
|
+
|
50
|
+
file_examples = examples.select { |example| example[:file_path] == file }
|
51
|
+
file_examples.each do |file_example|
|
52
|
+
puts _("\t%{id}\t%{description}" % { id: file_example[:id], description: file_example[:full_description] })
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
else
|
57
|
+
PDK.logger.info _('--verbose has no effect when not used with --list') if opts[:verbose]
|
58
|
+
|
59
|
+
report = PDK::Report.new
|
60
|
+
report_formats = if opts[:format]
|
61
|
+
PDK::CLI::Util::OptionNormalizer.report_formats(opts[:format])
|
62
|
+
else
|
63
|
+
[{
|
64
|
+
method: PDK::Report.default_format,
|
65
|
+
target: PDK::Report.default_target,
|
66
|
+
}]
|
67
|
+
end
|
68
|
+
|
69
|
+
# Ensure that the bundled gems are up to date and correct Ruby is activated before running tests.
|
70
|
+
puppet_env = PDK::CLI::Util.puppet_from_opts_or_env(opts)
|
71
|
+
PDK::Util::PuppetVersion.fetch_puppet_dev if opts.key?(:'puppet-dev')
|
72
|
+
PDK::Util::RubyVersion.use(puppet_env[:ruby_version])
|
73
|
+
|
74
|
+
opts.merge!(puppet_env[:gemset])
|
75
|
+
|
76
|
+
PDK::Util::Bundler.ensure_bundle!(puppet_env[:gemset])
|
77
|
+
|
78
|
+
exit_code = PDK::Test::Unit.invoke(report, opts)
|
79
|
+
|
80
|
+
report_formats.each do |format|
|
81
|
+
report.send(format[:method], format[:target])
|
82
|
+
end
|
83
|
+
|
84
|
+
exit exit_code
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'pdk/cli/util'
|
2
|
+
require 'pdk/util'
|
3
|
+
|
4
|
+
module PDK::CLI
|
5
|
+
@update_cmd = @base_cmd.define_command do
|
6
|
+
name 'update'
|
7
|
+
usage _('update [options]')
|
8
|
+
summary _('Update a module that has been created by or converted for use by PDK.')
|
9
|
+
|
10
|
+
flag nil, :noop, _('Do not update the module, just output what would be done.')
|
11
|
+
flag nil, :force, _('Update the module automatically, with no prompts.')
|
12
|
+
|
13
|
+
run do |opts, _args, _cmd|
|
14
|
+
require 'pdk/module/update'
|
15
|
+
|
16
|
+
PDK::CLI::Util.ensure_in_module!(
|
17
|
+
message: _('`pdk update` can only be run from inside a valid module directory.'),
|
18
|
+
log_level: :info,
|
19
|
+
)
|
20
|
+
|
21
|
+
raise PDK::CLI::ExitWithError, _('This module does not appear to be PDK compatible. To make the module compatible with PDK, run `pdk convert`.') unless PDK::Util.module_pdk_compatible?
|
22
|
+
|
23
|
+
if opts[:noop] && opts[:force]
|
24
|
+
raise PDK::CLI::ExitWithError, _('You can not specify --noop and --force when updating a module')
|
25
|
+
end
|
26
|
+
|
27
|
+
updater = PDK::Module::Update.new(opts)
|
28
|
+
|
29
|
+
updater.run
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|