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
127 128 129 130 131 132 133 134 135 136 |
# File 'lib/aspera/cli/preset_actions.rb', line 127 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 end Result::Status.new("Updated: #{name}") end |
#action_preset_delete(name:) ⇒ Object
74 75 76 77 78 79 80 |
# File 'lib/aspera/cli/preset_actions.rb', line 74 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
82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/aspera/cli/preset_actions.rb', line 82 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
109 110 111 112 113 114 115 |
# File 'lib/aspera/cli/preset_actions.rb', line 109 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.() 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 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# 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] secret_keywords = %w[password secret].freeze preset_names.each do |preset_name| preset = cp[preset_name] next unless preset.is_a?(Hash) preset.each_key do |option_name| secret_keywords.each do |keyword| next unless option_name.end_with?(keyword) vault_label = preset_name incr = 0 until vault.get(label: vault_label, exception: false).nil? vault_label = "#{preset_name}#{incr}" incr += 1 end to_set = {label: vault_label, password: preset[option_name]} puts "need to encode #{preset_name}.#{option_name} -> #{vault_label} -> #{to_set}" vault.set(to_set) preset[option_name] = "@vault:#{vault_label}.password" end 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
102 103 104 105 106 107 |
# File 'lib/aspera/cli/preset_actions.rb', line 102 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, param_value) Result::Nothing.new end |
#action_preset_show(name:) ⇒ Object
67 68 69 70 71 72 |
# File 'lib/aspera/cli/preset_actions.rb', line 67 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
94 95 96 97 98 99 100 |
# File 'lib/aspera/cli/preset_actions.rb', line 94 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
117 118 119 120 121 122 123 124 125 |
# File 'lib/aspera/cli/preset_actions.rb', line 117 def action_preset_update(name:, **) name = presets.global_default_preset if name.eql?(GLOBAL_DEFAULT_KEYWORD) = . Log.log.debug{"opts=#{}"} cp = presets.config_presets cp[name] ||= {} cp[name].merge!() Result::Status.new("Updated: #{name}") end |