Module: Rmega::CLI::Helpers

Defined in:
lib/rmega/cli.rb

Instance Method Summary collapse

Instance Method Details

#apply_cli_optionsObject



40
41
42
43
44
45
46
# File 'lib/rmega/cli.rb', line 40

def apply_cli_options
  cli_options.each do |key, value|
    Rmega.options.__send__("#{key}=", value)
  end
  Rmega.logger.level = ::Logger::DEBUG if cli_options[:debug]
  Rmega.options.show_progress = true
end

#apply_opt_parser_options(opts) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/rmega/cli.rb', line 48

def apply_opt_parser_options(opts)
  opts.on("-t NUM", "--thread_pool_size", "Number of threads to use [1-8], default and recommended is #{Rmega.options.thread_pool_size}") { |num|
    num = num.to_i

    if num <= 0
      num = 1
    elsif num > 8
      num = 8
    end

    cli_options[:thread_pool_size] = num
  }

  opts.on("--proxy-addr ADDRESS", "Http proxy address") { |value|
    cli_options[:http_proxy_address] = value
  }

  opts.on("--proxy-port PORT", "Http proxy port") { |value|
    cli_options[:http_proxy_port] = value.to_i
  }

  opts.on("-u", "--user USER_EMAIL", "User email address") { |value|
    cli_options[:user] = value
  }

  opts.on("--pass [USER_PASSWORD]", "User password (if omitted will prompt for it)") { |value|
    cli_options[:pass] = value
  }

  opts.on("--debug", "Debug mode") {
    cli_options[:debug] = true
  }

  opts.on("-v", "--version", "Print the version number") {
    puts Rmega::VERSION
    puts Rmega::HOMEPAGE
    exit(0)
  }
end

#cli_optionsObject



8
9
10
# File 'lib/rmega/cli.rb', line 8

def cli_options
  $cli_options ||= read_configuration_file
end

#cli_prompt_passwordObject



12
13
14
15
16
17
18
19
# File 'lib/rmega/cli.rb', line 12

def cli_prompt_password
  print("Enter password: ")
  password = STDIN.noecho(&:gets)
  password = password[0..-2] if password.end_with?("\n")
  puts

  return password
end

#cli_rescueObject



111
112
113
114
115
116
117
118
119
120
121
122
# File 'lib/rmega/cli.rb', line 111

def cli_rescue
  apply_cli_options
  yield
rescue Interrupt
  puts "\nInterrupted"
rescue Exception => ex
  if cli_options[:debug]
    raise(ex)
  else
    $stderr.puts "\nERROR: #{ex.message}"
  end
end

#configuration_filepathObject



25
26
27
# File 'lib/rmega/cli.rb', line 25

def configuration_filepath
  File.expand_path('~/.rmega')
end

#mega_url?(url) ⇒ Boolean

Returns:

  • (Boolean)


21
22
23
# File 'lib/rmega/cli.rb', line 21

def mega_url?(url)
  Nodes::Factory.url?(url)
end

#read_configuration_fileObject



29
30
31
32
33
34
35
36
37
38
# File 'lib/rmega/cli.rb', line 29

def read_configuration_file
  return {} unless File.exists?(configuration_filepath)

  opts = YAML.load_file(configuration_filepath)
  opts.keys.each { |k| opts[k.to_sym] = opts.delete(k) } # symbolize_keys!

  return opts
rescue Exception => ex
  raise(ex)
end

#traverse_storage(node, path, opts = {}) ⇒ Object



88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/rmega/cli.rb', line 88

def traverse_storage(node, path, opts = {})
  path.gsub!(/^\/|\/$/, "")
  curr_part = path.split("/")[0] || ""
  last_part = (path.split("/")[1..-1] || []).join("/")

  if curr_part.empty?
    if node.type == :root or node.type == :folder
      return node
    else
      return nil
    end
  else
    n = node.folders.find { |n| n.name.casecmp(curr_part).zero? }
    n ||= node.files.find { |n| n.name.casecmp(curr_part).zero? } unless opts[:only_folders]

    if last_part.empty?
      return n
    else
      return traverse_storage(n, last_part)
    end
  end
end