Module: Aspera::Cli::AscpActions
- Included in:
- Plugins::Config
- Defined in:
- lib/aspera/cli/ascp_actions.rb
Overview
Mixin for Config plugin: ASCP / Transferd related actions
Constant Summary collapse
- TRANSFERD_APP_NAME =
'sdk'
Instance Method Summary collapse
- #action_agents_list ⇒ Object
- #action_agents_parameters(agent_name:) ⇒ Object
- #action_agents_show(agent_name:) ⇒ Object
- #action_ascp_errors ⇒ Object
- #action_ascp_info ⇒ Object
- #action_ascp_install(version: nil) ⇒ Object
- #action_ascp_products_list ⇒ Object
- #action_ascp_schema(agent_name: nil) ⇒ Object
- #action_ascp_show ⇒ Object
- #action_ascp_spec ⇒ Object
- #action_transferd_install ⇒ Object
- #action_transferd_list ⇒ Object
-
#install_transfer_sdk(version: nil) ⇒ Result::Status
Install the transfer SDK (ascp + transferd) from a URL or using the default source.
-
#set_sdk_dir ⇒ Object
Set the SDK directory, checking default and former locations.
Instance Method Details
#action_agents_list ⇒ Object
95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/aspera/cli/ascp_actions.rb', line 95 def action_agents_list(**) rows = Agent::Factory::ALL.map do |sym, names| schema_key = AGENT_SCHEMA_KEY[sym] param_names = if schema_key Schema::Registry.instance.reader(schema_key).current['properties']&.keys&.sort&.join(', ') || '' else '' end { 'name' => sym.to_s, 'short' => names[:short].to_s, 'parameters' => param_names } end.sort_by{ |r| r['name']} Result::ObjectList.new(rows, fields: %w[name short parameters]) end |
#action_agents_parameters(agent_name:) ⇒ Object
135 136 137 138 139 140 141 142 143 |
# File 'lib/aspera/cli/ascp_actions.rb', line 135 def action_agents_parameters(agent_name:, **) schema_key = AGENT_SCHEMA_KEY[agent_name] return Result::Nothing.new if schema_key.nil? properties = Schema::Registry.instance.reader(schema_key).current['properties'] || {} rows = properties.map do |pname, pdef| {'name' => pname, 'type' => pdef['type'].to_s, 'description' => pdef['description'].to_s} end Result::ObjectList.new(rows, fields: %w[name type description]) end |
#action_agents_show(agent_name:) ⇒ Object
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
# File 'lib/aspera/cli/ascp_actions.rb', line 113 def action_agents_show(agent_name:, **) names = Agent::Factory::ALL[agent_name] schema_key = AGENT_SCHEMA_KEY[agent_name] agent_info = { 'name' => agent_name.to_s, 'short' => names[:short].to_s, 'description' => schema_key ? Schema::Registry.instance.reader(schema_key).current['description'].to_s : '(no configurable parameters)' } if schema_key properties = Schema::Registry.instance.reader(schema_key).current['properties'] || {} rows = properties.map do |pname, pdef| row = {'parameter' => pname, 'type' => pdef['type'].to_s, 'description' => pdef['description'].to_s} row['required'] = (Schema::Registry.instance.reader(schema_key).current['required'] || []).include?(pname) ? 'yes' : 'no' row['default'] = pdef.key?('default') ? pdef['default'].inspect : '' row['enum'] = pdef.key?('enum') ? pdef['enum'].join(', ') : '' row end return Result::ObjectList.new(rows, fields: %w[parameter required type default enum description]) end Result::SingleObject.new(agent_info) end |
#action_ascp_errors ⇒ Object
83 84 85 86 87 88 89 |
# File 'lib/aspera/cli/ascp_actions.rb', line 83 def action_ascp_errors(**) error_data = [] Ascp::Management::ERRORS.each_pair do |code, prop| error_data.push(code: code, mnemonic: prop[:c], retry: prop[:r], info: prop[:a]) end Result::ObjectList.new(error_data) end |
#action_ascp_info ⇒ Object
59 60 61 62 63 64 65 |
# File 'lib/aspera/cli/ascp_actions.rb', line 59 def action_ascp_info(**) data = Ascp::Installation.instance.ascp_info data['ts'] = transfer.user_transfer_spec DataRepository::ELEMENTS.each_with_object(data){ |i, h| h[i.to_s] = DataRepository.instance.item(i)} SecretHider::ADDITIONAL_KEYS_TO_HIDE.concat(DataRepository::ELEMENTS.map(&:to_s)) Result::SingleObject.new(data) end |
#action_ascp_install(version: nil) ⇒ Object
67 68 69 |
# File 'lib/aspera/cli/ascp_actions.rb', line 67 def action_ascp_install(version: nil, **) install_transfer_sdk(version: version) end |
#action_ascp_products_list ⇒ Object
91 92 93 |
# File 'lib/aspera/cli/ascp_actions.rb', line 91 def action_ascp_products_list(**) Result::ObjectList.new(Ascp::Installation.instance.installed_products, fields: %w[name app_root]) end |
#action_ascp_schema(agent_name: nil) ⇒ Object
76 77 78 79 80 81 |
# File 'lib/aspera/cli/ascp_actions.rb', line 76 def action_ascp_schema(agent_name: nil, **) schema = Transfer::Spec::SCHEMA.current.merge({'$comment'=>'DO NOT EDIT, this file was generated from the YAML.'}) schema['properties'] = schema['properties'].select{ |_k, v| CommandLineBuilder.supported_by_agent(agent_name, v)} unless agent_name.nil? schema['properties'] = schema['properties'].sort.to_h Result::SingleObject.new(schema) end |
#action_ascp_show ⇒ Object
55 56 57 |
# File 'lib/aspera/cli/ascp_actions.rb', line 55 def action_ascp_show(**) Result::Text.new(Ascp::Installation.instance.path(:ascp)) end |
#action_ascp_spec ⇒ Object
71 72 73 74 |
# File 'lib/aspera/cli/ascp_actions.rb', line 71 def action_ascp_spec(**) builder = Schema::Documentation.new(TerminalFormatter, Transfer::Spec::SCHEMA, include_option: true, agent_columns: true).build Result::ObjectList.new(builder.rows, fields: builder.columns) end |
#action_transferd_install ⇒ Object
145 146 147 |
# File 'lib/aspera/cli/ascp_actions.rb', line 145 def action_transferd_install(**) install_transfer_sdk end |
#action_transferd_list ⇒ Object
149 150 151 152 |
# File 'lib/aspera/cli/ascp_actions.rb', line 149 def action_transferd_list(**) sdk_list = Ascp::Installation.instance.sdk_locations Result::ObjectList.new(sdk_list, fields: sdk_list.first.keys - ['url']) end |
#install_transfer_sdk(version: nil) ⇒ Result::Status
Install the transfer SDK (ascp + transferd) from a URL or using the default source.
Version defaults to Info::SDK_VERSION; pass LATEST as argument to install the latest available version.
46 47 48 49 50 51 52 53 |
# File 'lib/aspera/cli/ascp_actions.rb', line 46 def install_transfer_sdk(version: nil) asked_version = version.nil? ? Info::SDK_VERSION : version asked_version = nil if asked_version.eql?(SpecialValues::LATEST) sdk_url = .get_option(:sdk_url, mandatory: true) sdk_url = nil if sdk_url.eql?(SpecialValues::DEF) name, ver, folder = Ascp::Installation.instance.install_sdk(url: sdk_url, version: asked_version) return Result::Status.new("Installed #{name} version #{ver} in #{folder}") end |
#set_sdk_dir ⇒ Object
Set the SDK directory, checking default and former locations
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/aspera/cli/ascp_actions.rb', line 24 def set_sdk_dir sdk_dir = Products::Transferd.sdk_directory rescue nil if sdk_dir.nil? @sdk_default_location = true Log.log.debug('SDK folder is not set, checking default') sdk_dir = self.class.default_app_main_folder(app_name: TRANSFERD_APP_NAME) Log.log.debug{"Checking: #{sdk_dir}"} if !Dir.exist?(sdk_dir) Log.log.debug{"No such folder: #{sdk_dir}"} former_sdk_folder = File.join(self.class.default_app_main_folder(app_name: Info::CMD_NAME), TRANSFERD_APP_NAME) Log.log.debug{"Checking: #{former_sdk_folder}"} sdk_dir = former_sdk_folder if Dir.exist?(former_sdk_folder) end Log.log.debug{"Using: #{sdk_dir}"} Products::Transferd.sdk_directory = sdk_dir end end |