class Aspera::Sync

builds command line arg for async

Constants

INSTANCE_PARAMS
MANDATORY_KEYS
SESSION_PARAMS

Public Class Methods

new(sync_params) click to toggle source
# File lib/aspera/sync.rb, line 47
def initialize(sync_params)
  @sync_params=sync_params
end

Public Instance Methods

compute_args() click to toggle source
# File lib/aspera/sync.rb, line 53
def compute_args
  raise StandardError,"parameter must be Hash" unless @sync_params.is_a?(Hash)
  raise StandardError,"parameter hash must have at least 'sessions', and optionally 'instance' keys." unless @sync_params.keys.push('instance').uniq.sort.eql?(MANDATORY_KEYS)
  raise StandardError,"sessions key must be Array" unless @sync_params['sessions'].is_a?(Array)
  raise StandardError,"sessions key must has at least one element (hash)" unless @sync_params['sessions'].first.is_a?(Hash)

  env_args={
    :args=>[],
    :env=>{}
  }

  if @sync_params.has_key?('instance')
    raise StandardError,"instance key must be hash" unless @sync_params['instance'].is_a?(Hash)
    instance_builder=CommandLineBuilder.new(@sync_params['instance'],INSTANCE_PARAMS)
    instance_builder.process_params
    instance_builder.add_env_args(env_args[:env],env_args[:args])
  end

  @sync_params['sessions'].each do |session_params|
    raise StandardError,"sessions must contain hashes" unless session_params.is_a?(Hash)
    raise StandardError,"session must contain at leat name" unless session_params.has_key?('name')
    session_builder=CommandLineBuilder.new(session_params,SESSION_PARAMS)
    session_builder.process_params
    session_builder.add_env_args(env_args[:env],env_args[:args])
  end

  return env_args
end