Module: PDK::CLI::Set::Config
- Defined in:
- lib/pdk/cli/set/config.rb
Constant Summary collapse
- ALLOWED_TYPE_NAMES =
['array', 'boolean', 'number', 'string'].freeze
Class Method Summary collapse
-
.pretty_allowed_names ⇒ Object
:nocov:.
- .run(opts, args) ⇒ Object
-
.transform_value(type_name, value) ⇒ Object
:nocov:.
Class Method Details
.pretty_allowed_names ⇒ Object
:nocov:
8 9 10 |
# File 'lib/pdk/cli/set/config.rb', line 8 def self.pretty_allowed_names ALLOWED_TYPE_NAMES.map { |name| "'#{name}'" }.join(', ') end |
.run(opts, args) ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/pdk/cli/set/config.rb', line 66 def self.run(opts, args) item_name = args.count.positive? ? args[0] : nil item_value = args.count > 1 ? args[1] : nil opts[:type] = opts[:as] if opts[:type].nil? && !opts[:as].nil? force = opts[:force] || false # Transform the value if we need to item_value = PDK::CLI::Set::Config.transform_value(opts[:type], item_value) unless opts[:type].nil? raise PDK::CLI::ExitWithError, 'Configuration name is required' if item_name.nil? raise PDK::CLI::ExitWithError, 'Configuration value is required. If you wish to remove a value use \'pdk remove config\'' if item_value.nil? current_value = PDK.config.get(item_name) raise PDK::CLI::ExitWithError, format("The configuration item '%{name}' can not have a value set.", name: item_name) if current_value.is_a?(PDK::Config::Namespace) # If we're forcing the value, don't do any munging # Check if the setting already exists if !force && (current_value.is_a?(Array) && current_value.include?(item_value)) PDK.logger.info(format("No changes made to '%{name}' as it already contains value '%{to}'", name: item_name, to: item_value)) return 0 end new_value = PDK.config.set(item_name, item_value, force: opts[:force]) if current_value.nil? || force PDK.logger.info(format("Set initial value of '%{name}' to '%{to}'", name: item_name, to: new_value)) elsif current_value.is_a?(Array) # Arrays have a special output format PDK.logger.info(format("Added new value '%{to}' to '%{name}'", name: item_name, to: item_value)) else PDK.logger.info(format("Changed existing value of '%{name}' from '%{from}' to '%{to}'", name: item_name, from: current_value, to: new_value)) end # Same output as `get config` $stdout.puts format('%{name}=%{value}', name: item_name, value: PDK.config.get(item_name)) 0 end |
.transform_value(type_name, value) ⇒ Object
:nocov:
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/pdk/cli/set/config.rb', line 13 def self.transform_value(type_name, value) normalized_name = type_name.downcase.strip unless ALLOWED_TYPE_NAMES.include?(normalized_name) raise PDK::CLI::ExitWithError, format('Unknown type %{type_name}. Expected one of %{allowed}', type_name: type_name, allowed: pretty_allowed_names) end # Short circuit string conversions as it's trivial if normalized_name == 'string' raise PDK::CLI::ExitWithError, format('An error occured converting \'%{value}\' into a %{type_name}', value: value.nil? ? 'nil' : value, type_name: type_name) unless value.is_a?(String) return value end begin case normalized_name when 'array' convert_to_array(value) when 'boolean' convert_to_boolean(value) when 'number' convert_to_number(value) else value end rescue ArgumentError, TypeError raise PDK::CLI::ExitWithError, format('An error occured converting \'%{value}\' into a %{type_name}', value: value.nil? ? 'nil' : value, type_name: type_name) end end |