#!/usr/bin/env perl use strict; use warnings; use Pod::Usage; use Getopt::Long; use FindBin; use File::Spec; use File::HomeDir; use File::Temp (); use lib File::Spec->catfile($FindBin::Bin, qw/.. lib/); use YAML; use ExtUtils::MakeMaker (); use WWW::Google::Docs::Upload; our $conf = File::Spec->catfile( File::HomeDir->my_home, '.gdoc_upload' ); our %config; our $changed; main(); END { save_config() if $changed; } sub prompt { my $value = ExtUtils::MakeMaker::prompt($_[0]); $changed++; $value; } sub main { GetOptions( \my %option, qw/help name=s/ ); pod2usage(0) if $option{help}; setup_config(); my ($filename, $stdin, $fh); $stdin = do { local $/; }; if ($stdin) { my ($suffix) = ($option{name} || '') =~ /(\.?[^.]+)$/; $fh = File::Temp->new( $suffix ? (SUFFIX => $suffix) : () ); print $fh $stdin; $fh->close; $filename = $fh->filename; } else { $filename = $ARGV[0]; } pod2usage(1) unless $filename; my $gdoc = WWW::Google::Docs::Upload->new( email => $config{email}, passwd => $config{passwd}, ); $gdoc->upload($filename, { name => $option{name} || '' }); } sub setup_config { my $config = eval { YAML::LoadFile($conf) } || {}; %config = %$config; $config{email} ||= prompt('email:'); $config{passwd} ||= prompt('passwd:'); } sub save_config { YAML::DumpFile($conf, \%config); chmod 0600, $conf; } __END__ =head1 NAME gdoc-upload.pl - Upload documents to Google Docs. =head1 SYNOPSIS gdoc-upload.pl [options] /path/to/documents Options: -n --name name what you want call it in gdocs -h --help show this help =head1 AUTHOR Daisuke Murase =cut