class CloudappExport::CLI

Public Instance Methods

all() click to toggle source
# File lib/cloudapp_export/cli.rb, line 14
def all
  authenticate!

  items = CloudappExport::ItemList.new(
    api,
    'limit' => options['limit'],
    'use_cache' => options['cache'],
    'cache_key' => "#{username}:#{options['limit']}",
  )
  say("Account contains #{set_color items.total_count, :bold} items")
  say("", nil, true)

  exporter = ::CloudappExport::Exporter.new(
    items,
    'dir' => options['dir'],
  )
  exporter.on_log do |message|
    print message
  end
  exporter.export_all
end
api() click to toggle source
# File lib/cloudapp_export/cli.rb, line 63
def api
  @api ||= begin
    CloudappExport::Api.new(
      'username' => username,
      'password' => password,
    )
  end
end
authenticate!() click to toggle source
# File lib/cloudapp_export/cli.rb, line 72
def authenticate!
  api.authenticate!
  say("Successfully authenticated!", :green)
rescue StandardError => error
  say("Could not authenticate with Cloudapp (#{error.message})", :red)
  Kernel.exit
end
password() click to toggle source
# File lib/cloudapp_export/cli.rb, line 89
def password
  say("WARNING: Passing password via the command line is not recommended!", :yellow) if options['password']
  @password ||= begin
    password = options['password']
    password ||= ENV['CLOUDAPP_PASSWORD']
    (password ||= ask("Password:", echo: false)) && say('*' * 20)
    password || raise("Password is required")
  end
end
stats() click to toggle source
# File lib/cloudapp_export/cli.rb, line 40
def stats
  authenticate!

  items = CloudappExport::ItemList.new(
    api,
  )
  say("Account contains #{set_color items.total_count, :bold} items")
  say("", nil, true)

  say("Dir         #{options['dir']}")
  say("", nil, true)

  # TODO: Just count files directly in local folder
  downloaded_items = items.data.select { |item| File.exist?("#{options['dir']}/#{item.filename}") }
  downloaded_items_size = downloaded_items.inject(0) { |sum, item| sum + File.size("#{options['dir']}/#{item.filename}") }

  say("Downloaded  #{downloaded_items.count}")
  say("            #{(downloaded_items_size.to_f / 1_000_000).round 2} mb")
end
username() click to toggle source
# File lib/cloudapp_export/cli.rb, line 80
def username
  @username ||= begin
    username = options['username']
    username ||= ENV['CLOUDAPP_USERNAME']
    username ||= ask("Username:")
    username || raise("Username is required")
  end
end