App-Todo
view release on metacpan or search on metacpan
bin/todo.pl view on Meta::CPAN
use App::Todo;
use Config;
use Encode ();
use LWP::UserAgent;
use Number::RecordLocator;
use Getopt::Long;
use Pod::Usage;
use Email::Address;
use Fcntl qw(:mode);
use File::Temp;
use Digest::MD5 qw(md5_hex);
BEGIN {
local $@;
no strict 'refs';
no warnings 'once';
if ( eval { require YAML::Syck; YAML::Syck->VERSION(0.71) } ) {
$YAML::Syck::ImplicitUnicode++;
*Load = *YAML::Syck::Load;
*Dump = *YAML::Syck::Dump;
*LoadFile = *YAML::Syck::LoadFile;
*DumpFile = *YAML::Syck::DumpFile;
} else {
require YAML;
*Load = *YAML::Load;
*Dump = *YAML::Dump;
*LoadFile = *YAML::LoadFile;
*DumpFile = *YAML::DumpFile;
}
}
our $CONFFILE = "$ENV{HOME}/.hiveminder";
our $VERSION = $App::Todo::VERSION;
our %config = ();
our $ua = LWP::UserAgent->new;
our $locator = Number::RecordLocator->new();
our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";
our $unaccepted_query = "unaccepted/not/complete";
our $requests_query = "requestor/me/not/owner/me/not/complete";
our %args;
our $command;
our %commands;
# Setup our user agent string (useful for feedback)
$ua->agent("todo.pl/$VERSION ($Config{osname} $Config{osvers}; perl v$Config{version}, $Config{archname}) ");
$ua->cookie_jar({});
# Load the user's proxy settings from %ENV
$ua->env_proxy;
my $encoding;
eval {
require Term::Encoding;
$encoding = Term::Encoding::get_encoding();
};
$encoding ||= "utf-8";
binmode STDOUT, ":encoding($encoding)";
# Setup colored output if we have it
eval { require Term::ANSIColor };
if ( not $@ and supports_color() ) {
*color = *_color_real;
*colored = *_colored_real;
}
else {
*color = *_color_passthru;
*colored = *_colored_passthru;
}
sub _color_passthru { }
sub _colored_passthru { return shift }
sub _color_real { Term::ANSIColor::color(@_) }
sub _colored_real { Term::ANSIColor::colored(@_) }
main();
sub main {
GetOptions(\%args,
"tags=s",
"tag=s@", "group=s",
"priority|pri=s",
"due=s",
"hide=s",
"owner=s",
"help",
"version",
"config=s",)
or pod2usage(2);
$CONFFILE = $args{config} if $args{config};
pod2usage(0) if $args{help};
if ($args{version}) {
version();
exit();
}
setup_config();
# If they don't want color, switch it off
if ( defined $config{color} and $config{color} eq 'off' ) {
*color = *_color_passthru;
*colored = *_colored_passthru;
}
push @{$args{tag}}, split /\s+/, $args{tags} if $args{tags};
if($args{priority}) {
$args{priority} = priority_from_string($args{priority})
unless $args{priority} =~ /^[1-5]$/;
die("Invalid priority: $args{priority}")
unless$args{priority} =~ /^[1-5]$/;
}
$args{owner} ||= "me";
do_login() or die("Bad username/password -- edit $CONFFILE and try again.");
( run in 3.722 seconds using v1.01-cache-2.11-cpan-5837b0d9d2c )