#!/usr/bin/env ruby # # = gmailfs.rb - Simple program to store and retrieve files on Gmail # # This is a port of Perl's {Net::FS::Gmail}[http://search.cpan.org/~simonw/Net-FS-Gmail/]. # File storage should be compatible with the original Perl version. # # == USAGE # # gmailfs.rb [ COMMAND ] # # If no +COMMAND+ is specified the list of stored files will be retrieved. # # Commands and their supported arguments: # * +delete+ - Delete file(s) # 1. _file_ # 2. _version_ (optional) # * +quota+ - Print quota information # * +remove+ - Move file(s) to trash # 1. _file_ # 2. _version_ (optional) # * +retrieve+ - Get file from Gmail # 1. _file_ # 2. _as_ (optional) # 3. _version_ (optional) # * +store+ - Store file at Gmail # 1. _file_ # 2. _version_ (optional) # * +versions+ - Get version(s) of file stored at Gmail # 1. _file_ # # == License # # Net::FS::Gmail is released under the Apache License, Version 2.0 # # == Author # # Blair Christensen. # # == Copyright # # Copyright (C) 2007, Blair Christensen # require 'net/fs/gmail' user = ARGV.shift || raise('You must pass a user name') pass = ARGV.shift || raise('You must pass a password') fs = Net::FS::Gmail.new(user, pass) cmd = ARGV.shift if cmd.nil? fs.files.each { |f| puts f } exit end case cmd when 'delete' file = ARGV.shift || raise('You must pass a file name') fs.delete(file, ARGV.shift) when 'quota' quota = fs.quota() puts sprintf("%s MB (%s%%)", quota[0], quota[1]) when 'remove' file = ARGV.shift || raise('You must pass a file name') fs.remove(file, ARGV.shift) when 'retrieve' file = ARGV.shift || raise('You must pass a file name') fs.retrieve(file, ARGV.shift, ARGV.shift) when 'store' file = ARGV.shift || raise('You must pass a file name') fs.store(file, ARGV.shift) when 'versions' file = ARGV.shift || raise('You must pass a file name') fs.versions(file).each_with_index do |v,idx| puts sprintf("%-3d\t%-16s\t%-7s", idx + 1, v.id, v.date) end else raise("Uknown command '#{cmd}'") end exit