class Gphotos::App

Public Class Methods

load_config(file) click to toggle source
# File lib/gphotos/app.rb, line 56
def self.load_config(file)
  full_path = File.expand_path(file)
  if File.exists?(full_path)
    YAML.load_file(full_path)
  else
    {}
  end
end
new(args) click to toggle source
# File lib/gphotos/app.rb, line 65
def initialize(args)
  options = self.class.parse(args)
  config = self.class.load_config('~/.gphotos/config.yml')
  @options = OpenStruct.new(config.merge(options.to_h))
end
parse(args) click to toggle source
# File lib/gphotos/app.rb, line 9
def self.parse(args)
  options = OpenStruct.new

  opt_parser = OptionParser.new do |opts|
    opts.banner = "Usage: #{$0} [options] file..."
    opts.separator "\nSpecific options:"

    opts.on("-eEMAIL", "--email=EMAIL", "Set email to EMAIL") do |o|
      options.email = o
    end

    opts.on("-pPASSWD", "--passwd=PASSWD", "Set passwd to PASSWD") do |o|
      options.passwd = o
    end

    opts.on("-lFILE", "--list=FILE", "Read list of files to upload from FILE") do |o|
      options.list = o
    end

    opts.separator "\nCommon options:"

    opts.on_tail('-h', '--help', 'Show this message') do
      puts opts
      exit
    end

    opts.on_tail('-V', '--version', 'Show version') do
      puts VERSION
      exit
    end
  end

  begin
    opt_parser.parse!(args)
  rescue OptionParser::InvalidOption
    puts opt_parser
    exit
  end

  if args.size == 0 and !options.list
    puts opt_parser
    exit
  end

  options
end

Public Instance Methods

run() click to toggle source
# File lib/gphotos/app.rb, line 71
def run
  files = []
  files.concat(ARGV)
  if @options.list
    files.concat(open(@options.list).read.split("\n"))
  end

  gphotos = Gphotos.new(@options.email, @options.passwd, @options.passwd_exec)

  puts "upload(#{files.size}):"
  uploaded, skipped, not_exist = gphotos.upload(files) do |file, status|
    case status
    when :uploading
      print "#{file} ..."
    when :skipped, :not_exist
      puts "\b\b\b(#{status})"
    when :uploaded
      puts "\b\b\b   "
    end
  end

  if skipped.size > 0
    puts
    puts 'skipped:'
    puts skipped.join("\n")
  end

  if not_exist.size > 0
    puts
    puts 'not_exist:'
    puts not_exist.join("\n")
  end

  puts
  puts 'done:'
  puts "#{uploaded.size} uploaded"
  puts "#{skipped.size} skipped" if skipped.size > 0
  puts "#{not_exist.size} not exist" if not_exist.size > 0

  gphotos.quit
end