lib/pdk/cli.rb in pdk-2.3.0 vs lib/pdk/cli.rb in pdk-2.4.0
- old
+ new
@@ -1,175 +1,175 @@
-require 'cri'
-
-require 'pdk'
-require 'pdk/cli/errors'
-
-module TTY
- autoload :Prompt, 'tty/prompt'
-
- class Prompt
- autoload :Test, 'tty/prompt/test'
- end
-end
-
-class Cri::Command::CriExitException
- def initialize(is_error:)
- @is_error = is_error
- PDK.analytics.event('CLI', 'invalid command', label: PDK::CLI.anonymised_args.join(' ')) if error?
- end
-end
-
-module PDK::CLI
- autoload :Util, 'pdk/cli/util'
-
- # Attempt to anonymise the raw ARGV array if the command parsing failed.
- #
- # If an item does not start with '-' but is preceeded by an item that does
- # start with '-', assume that these items are an option/value pair and redact
- # the value. Any additional values that do not start with '-' that follow an
- # option/value pair are assumed to be arguments (rather than subcommand
- # names) and are also redacted.
- #
- # @example
- # # Where PDK::CLI.args => ['new', 'plan', '--some', 'value', 'plan_name']
- #
- # PDK::CLI.anonymised_args
- # => ['new', 'plan', '--some', 'redacted', 'redacted']
- #
- # @return Array[String] the command arguments with any identifying values
- # redacted.
- def self.anonymised_args
- in_args = false
- @args.map do |arg|
- if arg.start_with?('-')
- in_args = true
- arg
- else
- in_args ? 'redacted' : arg
- end
- end
- end
-
- def self.deprecated_runtime?
- Gem::Version.new(RbConfig::CONFIG['ruby_version']) < Gem::Version.new('2.4.0')
- end
-
- def self.run(args)
- if deprecated_runtime?
- PDK.logger.info(
- text: _(
- 'Support for Ruby versions older than 2.4 will be dropped in the ' \
- 'future PDK 2.0.0 release. We recommend updating your Ruby ' \
- 'installation to ensure that you can continue using the latest ' \
- 'version of PDK.',
- ),
- wrap: true,
- )
- end
-
- @args = args
- PDK::Config.analytics_config_interview! unless PDK::Util::Env['PDK_DISABLE_ANALYTICS'] || PDK::Config.analytics_config_exist?
- @base_cmd.run(args)
- rescue PDK::CLI::ExitWithError => e
- PDK.logger.send(e.log_level, e.message)
-
- exit e.exit_code
- rescue PDK::CLI::FatalError => e
- PDK.logger.fatal(e.message) if e.message
-
- # If FatalError was raised as the result of another exception, send the
- # details of that exception to the debug log. If there was no cause
- # (FatalError raised on its own outside a rescue block), send the details
- # of the FatalError exception to the debug log.
- cause = e.cause
- if cause.nil?
- e.backtrace.each { |line| PDK.logger.debug(line) }
- else
- PDK.logger.debug("#{cause.class}: #{cause.message}")
- cause.backtrace.each { |line| PDK.logger.debug(line) }
- end
-
- exit e.exit_code
- end
-
- def self.template_url_option(dsl)
- require 'pdk/util/template_uri'
-
- desc = _('Specifies the URL to the template to use when creating new modules or classes. (default: %{default_url})') % { default_url: PDK::Util::TemplateURI.default_template_uri }
-
- dsl.option nil, 'template-url', desc, argument: :required
- end
-
- def self.template_ref_option(dsl)
- dsl.option nil, 'template-ref', _('Specifies the template git branch or tag to use when creating new modules or classes.'), argument: :required
- end
-
- def self.skip_interview_option(dsl)
- dsl.option nil, 'skip-interview', _('When specified, skips interactive querying of metadata.')
- end
-
- def self.full_interview_option(dsl)
- dsl.option nil, 'full-interview', _('When specified, interactive querying of metadata will include all optional questions.')
- end
-
- def self.puppet_version_options(dsl)
- dsl.option nil, 'puppet-version', _('Puppet version to run tests or validations against.'), argument: :required
- dsl.option nil, 'pe-version', _('Puppet Enterprise version to run tests or validations against.'), argument: :required
- end
-
- def self.puppet_dev_option(dsl)
- dsl.option nil,
- 'puppet-dev',
- _('When specified, PDK will validate or test against the current Puppet source from github.com. To use this option, you must have network access to https://github.com.')
- end
-
- @base_cmd = Cri::Command.define do
- name 'pdk'
- usage _('pdk command [options]')
- summary _('Puppet Development Kit')
- description _('The shortest path to better modules.')
- default_subcommand 'help'
-
- flag nil, :version, _('Show version of pdk.') do |_, _|
- puts PDK::Util::Version.version_string
- exit 0
- end
-
- flag :h, :help, _('Show help for this command.') do |_, c|
- puts c.help
- exit 0
- end
-
- format_desc = _(
- "Specify desired output format. Valid formats are '%{available_formats}'. " \
- 'You may also specify a file to which the formatted output is sent, ' \
- "for example: '--format=junit:report.xml'. This option may be specified " \
- 'multiple times if each option specifies a distinct target file.',
- ) % { available_formats: PDK::Report.formats.join("', '") }
-
- option :f, :format, format_desc, argument: :required, multiple: true do |values|
- PDK::CLI::Util::OptionNormalizer.report_formats(values.compact)
- end
-
- flag :d, :debug, _('Enable debug output.') do |_, _|
- PDK.logger.enable_debug_output
- end
- end
-
- require 'pdk/cli/bundle'
- require 'pdk/cli/build'
- require 'pdk/cli/config'
- require 'pdk/cli/convert'
- require 'pdk/cli/env'
- require 'pdk/cli/get'
- require 'pdk/cli/new'
- require 'pdk/cli/set'
- require 'pdk/cli/test'
- require 'pdk/cli/update'
- require 'pdk/cli/validate'
- require 'pdk/cli/module'
- require 'pdk/cli/console'
- require 'pdk/cli/release'
- require 'pdk/cli/remove'
-
- @base_cmd.add_command Cri::Command.new_basic_help
-end
+require 'cri'
+
+require 'pdk'
+require 'pdk/cli/errors'
+
+module TTY
+ autoload :Prompt, 'tty/prompt'
+
+ class Prompt
+ autoload :Test, 'tty/prompt/test'
+ end
+end
+
+class Cri::Command::CriExitException
+ def initialize(is_error:)
+ @is_error = is_error
+ PDK.analytics.event('CLI', 'invalid command', label: PDK::CLI.anonymised_args.join(' ')) if error?
+ end
+end
+
+module PDK::CLI
+ autoload :Util, 'pdk/cli/util'
+
+ # Attempt to anonymise the raw ARGV array if the command parsing failed.
+ #
+ # If an item does not start with '-' but is preceeded by an item that does
+ # start with '-', assume that these items are an option/value pair and redact
+ # the value. Any additional values that do not start with '-' that follow an
+ # option/value pair are assumed to be arguments (rather than subcommand
+ # names) and are also redacted.
+ #
+ # @example
+ # # Where PDK::CLI.args => ['new', 'plan', '--some', 'value', 'plan_name']
+ #
+ # PDK::CLI.anonymised_args
+ # => ['new', 'plan', '--some', 'redacted', 'redacted']
+ #
+ # @return Array[String] the command arguments with any identifying values
+ # redacted.
+ def self.anonymised_args
+ in_args = false
+ @args.map do |arg|
+ if arg.start_with?('-')
+ in_args = true
+ arg
+ else
+ in_args ? 'redacted' : arg
+ end
+ end
+ end
+
+ def self.deprecated_runtime?
+ Gem::Version.new(RbConfig::CONFIG['ruby_version']) < Gem::Version.new('2.4.0')
+ end
+
+ def self.run(args)
+ if deprecated_runtime?
+ PDK.logger.info(
+ text: _(
+ 'Support for Ruby versions older than 2.4 will be dropped in the ' \
+ 'future PDK 2.0.0 release. We recommend updating your Ruby ' \
+ 'installation to ensure that you can continue using the latest ' \
+ 'version of PDK.',
+ ),
+ wrap: true,
+ )
+ end
+
+ @args = args
+ PDK::Config.analytics_config_interview! unless PDK::Util::Env['PDK_DISABLE_ANALYTICS'] || PDK::Config.analytics_config_exist?
+ @base_cmd.run(args)
+ rescue PDK::CLI::ExitWithError => e
+ PDK.logger.send(e.log_level, e.message)
+
+ exit e.exit_code
+ rescue PDK::CLI::FatalError => e
+ PDK.logger.fatal(e.message) if e.message
+
+ # If FatalError was raised as the result of another exception, send the
+ # details of that exception to the debug log. If there was no cause
+ # (FatalError raised on its own outside a rescue block), send the details
+ # of the FatalError exception to the debug log.
+ cause = e.cause
+ if cause.nil?
+ e.backtrace.each { |line| PDK.logger.debug(line) }
+ else
+ PDK.logger.debug("#{cause.class}: #{cause.message}")
+ cause.backtrace.each { |line| PDK.logger.debug(line) }
+ end
+
+ exit e.exit_code
+ end
+
+ def self.template_url_option(dsl)
+ require 'pdk/util/template_uri'
+
+ desc = _('Specifies the URL to the template to use when creating new modules or classes. (default: %{default_url})') % { default_url: PDK::Util::TemplateURI.default_template_uri }
+
+ dsl.option nil, 'template-url', desc, argument: :required
+ end
+
+ def self.template_ref_option(dsl)
+ dsl.option nil, 'template-ref', _('Specifies the template git branch or tag to use when creating new modules or classes.'), argument: :required
+ end
+
+ def self.skip_interview_option(dsl)
+ dsl.option nil, 'skip-interview', _('When specified, skips interactive querying of metadata.')
+ end
+
+ def self.full_interview_option(dsl)
+ dsl.option nil, 'full-interview', _('When specified, interactive querying of metadata will include all optional questions.')
+ end
+
+ def self.puppet_version_options(dsl)
+ dsl.option nil, 'puppet-version', _('Puppet version to run tests or validations against.'), argument: :required
+ dsl.option nil, 'pe-version', _('Puppet Enterprise version to run tests or validations against.'), argument: :required
+ end
+
+ def self.puppet_dev_option(dsl)
+ dsl.option nil,
+ 'puppet-dev',
+ _('When specified, PDK will validate or test against the current Puppet source from github.com. To use this option, you must have network access to https://github.com.')
+ end
+
+ @base_cmd = Cri::Command.define do
+ name 'pdk'
+ usage _('pdk command [options]')
+ summary _('Puppet Development Kit')
+ description _('The shortest path to better modules.')
+ default_subcommand 'help'
+
+ flag nil, :version, _('Show version of pdk.') do |_, _|
+ puts PDK::Util::Version.version_string
+ exit 0
+ end
+
+ flag :h, :help, _('Show help for this command.') do |_, c|
+ puts c.help
+ exit 0
+ end
+
+ format_desc = _(
+ "Specify desired output format. Valid formats are '%{available_formats}'. " \
+ 'You may also specify a file to which the formatted output is sent, ' \
+ "for example: '--format=junit:report.xml'. This option may be specified " \
+ 'multiple times if each option specifies a distinct target file.',
+ ) % { available_formats: PDK::Report.formats.join("', '") }
+
+ option :f, :format, format_desc, argument: :required, multiple: true do |values|
+ PDK::CLI::Util::OptionNormalizer.report_formats(values.compact)
+ end
+
+ flag :d, :debug, _('Enable debug output.') do |_, _|
+ PDK.logger.enable_debug_output
+ end
+ end
+
+ require 'pdk/cli/bundle'
+ require 'pdk/cli/build'
+ require 'pdk/cli/config'
+ require 'pdk/cli/convert'
+ require 'pdk/cli/env'
+ require 'pdk/cli/get'
+ require 'pdk/cli/new'
+ require 'pdk/cli/set'
+ require 'pdk/cli/test'
+ require 'pdk/cli/update'
+ require 'pdk/cli/validate'
+ require 'pdk/cli/module'
+ require 'pdk/cli/console'
+ require 'pdk/cli/release'
+ require 'pdk/cli/remove'
+
+ @base_cmd.add_command Cri::Command.new_basic_help
+end