Sha256: 188139df61e68404024d53a788d1896b1fb41b6eb6d4f364e803c03dc1424e62
Contents?: true
Size: 1.89 KB
Versions: 1
Compression:
Stored size: 1.89 KB
Contents
#!/usr/bin/env ruby # # dcp: copy files to/from dropbox like scp command # # Copyright (C) 2017 by Tada, Tadashi <t@tdtds.jp> # Distributed under GPL # require 'dcp' require 'optparse' require 'pit' module DCP class CLI def run opts, args = parse_options dst = args.pop begin args.each do |src| open(src, 'r') do |r| open(dst, 'w') do |w| w.write(r.read(10_000_000)) end end end rescue => e usage e.message end end private def parse_options(argv = ARGV) op = OptionParser.new self.class.module_eval do define_method(:usage) do |msg = nil| puts op.to_s puts "error: #{msg}" if msg exit 1 end end opts = { } op.on('-h', '--help', "print this messages") do usage end op.banner += ' [db:]SRC [SRC...] [db:]DEST' begin args = op.parse(argv) rescue OptionParser::InvalidOption => e usage e.message end usage 'needs src and dest' if args.size < 2 return opts, args end def dropbox return @dropbox if @dropbox auth = ::Pit::get('dcp') unless auth[:dropbox_token] print "Enter dropbox app key: " api_key = $stdin.gets.chomp print "Enter dropbox app secret: " api_secret = $stdin.gets.chomp authenticator = ::DropboxApi::Authenticator.new(api_key, api_secret) puts "\nGo to this url and click 'Authorize' to get the token:" puts authenticator.authorize_url print "Enter the token: " code = $stdin.gets.chomp auth[:dropbox_token] = authenticator.get_token(code).token Pit::set('dcp', data: auth) end return @dropbox = Dropbox.new(auth[:dropbox_token]) end def dropbox_path?(path) path =~ /\A(db|dropbox):/ end def open(file, opts) if dropbox_path?(file) _, path = file.split(/:/, 2) dropbox.open(path, opts){|f| yield f} else File.open(file, opts){|f| yield f} end end end end DCP::CLI.new.run
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
dcp-0.1.1 | exe/dcp |