Module: Aspera::Cli::PresetActions
- Included in:
- Aspera::Cli::Plugins::Config
- Defined in:
- lib/aspera/cli/preset_actions.rb
Overview
Mixin for Config plugin: preset CRUD actions
Constant Summary collapse
- GLOBAL_DEFAULT_KEYWORD =
Used to identify the global default preset keyword
'GLOBAL'- CONF_OVERVIEW_KEYS =
Display columns for preset overview
%w[preset parameter value].freeze
Instance Method Summary collapse
- #action_preset_ask(name:, option_names:) ⇒ Object
- #action_preset_delete(name:) ⇒ Object
- #action_preset_get(name:, param_name:) ⇒ Object
- #action_preset_initialize(name:, config_value:) ⇒ Object
- #action_preset_list ⇒ Object
- #action_preset_lookup ⇒ Object
- #action_preset_overview ⇒ Object
- #action_preset_secure(config_name: nil) ⇒ Object
- #action_preset_set(name:, param_name:, param_value:) ⇒ Object
- #action_preset_show(name:) ⇒ Object
- #action_preset_unset(name:, param_name:) ⇒ Object
- #action_preset_update(name:) ⇒ Object
Instance Method Details
#action_preset_ask(name:, option_names:) ⇒ Object
146 147 148 149 150 151 152 153 154 155 156 |
# File 'lib/aspera/cli/preset_actions.rb', line 146 def action_preset_ask(name:, option_names:, **) name = presets.global_default_preset if name.eql?(GLOBAL_DEFAULT_KEYWORD) cp = presets.config_presets cp[name] ||= {} option_names.each do |option_name| option_value = .get_interactive(option_name, check_option: true) cp[name][option_name] = option_value secure_preset_option(cp[name], name, option_name) end Result::Status.new("Updated: #{name}") end |
#action_preset_delete(name:) ⇒ Object
91 92 93 94 95 96 97 |
# File 'lib/aspera/cli/preset_actions.rb', line 91 def action_preset_delete(name:, **) name = presets.global_default_preset if name.eql?(GLOBAL_DEFAULT_KEYWORD) cp = presets.config_presets raise "no such preset: #{name}" unless cp.key?(name) cp.delete(name) Result::Status.new("Deleted: #{name}") end |
#action_preset_get(name:, param_name:) ⇒ Object
99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/aspera/cli/preset_actions.rb', line 99 def action_preset_get(name:, param_name:, **) name = presets.global_default_preset if name.eql?(GLOBAL_DEFAULT_KEYWORD) cp = presets.config_presets raise "no such preset: #{name}" unless cp.key?(name) value = cp[name][param_name] raise "no such option in preset #{name} : #{param_name}" if value.nil? case value when Numeric, String then return Result::Text.new(ExtendedValue.instance.evaluate(value.to_s, context: 'preset')) end Result::SingleObject.new(value) end |
#action_preset_initialize(name:, config_value:) ⇒ Object
127 128 129 130 131 132 133 |
# File 'lib/aspera/cli/preset_actions.rb', line 127 def action_preset_initialize(name:, config_value:, **) name = presets.global_default_preset if name.eql?(GLOBAL_DEFAULT_KEYWORD) cp = presets.config_presets Log.log.warn { "configuration already exists: #{name}, overwriting" } if cp.key?(name) cp[name] = config_value Result::Status.new("Modified: #{@option_config_file}") end |
#action_preset_list ⇒ Object
14 15 16 |
# File 'lib/aspera/cli/preset_actions.rb', line 14 def action_preset_list(**) Result::ValueList.new(presets.config_presets.keys, name: 'name') end |
#action_preset_lookup ⇒ Object
32 33 34 35 36 37 38 39 |
# File 'lib/aspera/cli/preset_actions.rb', line 32 def action_preset_lookup(**) Plugins::BasicAuth.(, parse: true) url = .get_option(:url, mandatory: true) user = .get_option(:username, mandatory: true) result = presets.lookup_preset(url: url, username: user) Aspera.assert(!result.nil?, type: Error) { 'no such config found' } Result::SingleObject.new(result) end |
#action_preset_overview ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/aspera/cli/preset_actions.rb', line 18 def action_preset_overview(**) cp = presets.config_presets # Display process modifies the value (hide secrets): we do not want to save removed secrets data = PresetManager.deep_clone(cp) formatter.hide_secrets(data) result = [] data.each do |config, preset| preset.each do |parameter, value| result.push(CONF_OVERVIEW_KEYS.zip([config, parameter, value]).to_h) end end Result::ObjectList.new(result, fields: CONF_OVERVIEW_KEYS) end |
#action_preset_secure(config_name: nil) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/aspera/cli/preset_actions.rb', line 41 def action_preset_secure(config_name: nil, **) cp = presets.config_presets preset_names = config_name.nil? ? cp.keys : [config_name] preset_names.each do |preset_name| preset = cp[preset_name] next unless preset.is_a?(Hash) preset.each_key do |option_name| secure_preset_option(preset, preset_name, option_name) end end Result::Status.new('Secrets secured in vault: Make sure to save the vault password securely.') end |
#action_preset_set(name:, param_name:, param_value:) ⇒ Object
119 120 121 122 123 124 125 |
# File 'lib/aspera/cli/preset_actions.rb', line 119 def action_preset_set(name:, param_name:, param_value:, **) name = presets.global_default_preset if name.eql?(GLOBAL_DEFAULT_KEYWORD) param_name = Parser.option_line_to_name(param_name) presets.set_key(name, param_name, Parser.smart_convert(param_value)) secure_preset_option(presets.config_presets[name], name, param_name) Result::Nothing.new end |
#action_preset_show(name:) ⇒ Object
84 85 86 87 88 89 |
# File 'lib/aspera/cli/preset_actions.rb', line 84 def action_preset_show(name:, **) name = presets.global_default_preset if name.eql?(GLOBAL_DEFAULT_KEYWORD) cp = presets.config_presets raise "no such preset: #{name}" unless cp.key?(name) Result::SingleObject.new(PresetManager.deep_clone(cp[name])) end |
#action_preset_unset(name:, param_name:) ⇒ Object
111 112 113 114 115 116 117 |
# File 'lib/aspera/cli/preset_actions.rb', line 111 def action_preset_unset(name:, param_name:, **) name = presets.global_default_preset if name.eql?(GLOBAL_DEFAULT_KEYWORD) cp = presets.config_presets raise "no such preset: #{name}" unless cp.key?(name) cp[name].delete(param_name) Result::Status.new("Removed: #{name}: #{param_name}") end |
#action_preset_update(name:) ⇒ Object
135 136 137 138 139 140 141 142 143 144 |
# File 'lib/aspera/cli/preset_actions.rb', line 135 def action_preset_update(name:, **) name = presets.global_default_preset if name.eql?(GLOBAL_DEFAULT_KEYWORD) = . Log.dump(:opts, ) cp = presets.config_presets cp[name] ||= {} cp[name].merge!() .each_key { |k| secure_preset_option(cp[name], name, k) } Result::Status.new("Updated: #{name}") end |