#!/usr/bin/perl use strict; use warnings; our $VERSION = '0.05'; our $AUTHORITY = 'cpan:FAYLAND'; use Getopt::Long; use Pod::Usage; use Term::ReadKey; use Google::Code::Upload qw/upload/; my %params; GetOptions( \%params, "help|?", "s|summary=s", "n|project=s", "u|user=s", "p|pass=s", "l|labels=s", ); my $file = pop @ARGV; unless ($file) { pod2usage(1); } -e $file or die "$file is not found\n"; unless ( exists $params{n} ) { print "Please enter your project name: "; while ( $params{n} = ReadLine(0) ) { chomp($params{n}); last if $params{n}; } } unless ( exists $params{u} ) { print "Please enter your googlecode.com username: "; while ( $params{u} = ReadLine(0) ) { chomp($params{u}); last if $params{u}; } } unless ( exists $params{p} ) { ReadMode('noecho'); print "** Note that this is NOT your Gmail account password! **\n", "It is the password you use to access Subversion repositories,\n", "and can be found here: http://code.google.com/hosting/settings\n", "your password: "; while ( $params{p} = ReadLine(0) ) { chomp($params{p}); last if $params{p}; } ReadMode 'normal'; } unless ( exists $params{s} ) { print "\nPlease enter your file summary: "; while ( $params{s} = ReadLine(0) ) { chomp($params{s}); last if $params{s}; } } my @labels; if ( exists $params{l} ) { @labels = split(/\,\s*/, $params{l} ); } else { print "Please enter your file labels (eg: 'Featured, Type-Source, OpSys-All'): "; while ( my $labels = ReadLine(0) ) { chomp($labels); @labels = split(/\,\s*/, $labels); last; } } my ( $status, $reason, $url ) = upload( $file, $params{n}, $params{u}, $params{p}, $params{s}, \@labels ); if ( $url ) { print "The file was uploaded successfully.\nURL: $url\n"; } else { print "An error occurred. Your file was not uploaded.\nGoogle Code upload server said: $reason ($status)\n"; } 1; __END__ =head1 NAME googlecode_upload - script uploading files to a Google Code project. =head1 SYNOPSIS googlecode_upload.pl [options] FILE =head1 OPTIONS =over 4 =item B<-?>, B<--help> =item B Short description of the file =item B Google Code project name =item B Your Google Code Subversion username =item B Your Google Code Subversion password =item B An optional list of labels to attach to the file =back =head1 COPYRIGHT & LICENSE Copyright 2009 Fayland Lam, all rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut