blt
view release on metacpan or search on metacpan
lib/App/BLT.pm view on Meta::CPAN
# Copyright (C) 2007-8 Thomas Thurman <tthurman@gnome.org>
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
package App::BLT;
use strict;
use warnings;
use Cwd qw(abs_path);
use vars qw($VERSION @EXPORT @ISA);
use XML::Tiny qw(parsefile);
require Exporter;
our ($check, $set,
$sync, $force, $help, $version, $username,
$check_public,
%rc_settings);
@ISA = qw(Exporter);
$VERSION = '0.22';
# Well, since we're mainly here so that most of blt's functionality can
# live in module space, let's export almost everything. This needs
# cleaning up later, really, because it's not elegant.
@EXPORT = qw(twitter_post twitter_following print_masthead print_help
already_running_in_background
$check $set $help $version $force $sync $check_public $username
%rc_settings $timeline $last_fetch_filename $home $pid_filename
$rc_filename $last_fetch);
our $home = $ENV{HOME} || (getpwuid($<))[7];
our $rc_filename = "$home/.bltrc.xml";
our $pid_filename = "$home/.blt_pid";
our $last_fetch_filename = "$home/.blt_last_fetch";
our $timeline;
sub print_masthead {
print <<EOT;
blt - bash loves twitter - shell/twitter integration
Copyright (c) 2008 Thomas Thurman - tthurman\@gnome.org - http://marnanel.org
blt is released in the hope that it will be useful, but with NO WARRANTY.
blt is released under the terms of the GNU General Public Licence.
EOT
}
sub print_help {
print <<EOT;
Choose at most one mode:
-c, --check = print updates from Twitter
-s, --set = update Twitter from command line (default)
-h, --help = show this text
-v, --version = show version number
-a, --as=USER = post as USER, if you add them in ~/.bltrc.xml
Switches:
-F, --force = always check, even if we checked recently
-S, --sync = don't check in the background
-P, --public = read the public timeline (not for posting!)
EOT
}
sub add_to_bashrc {
my $bashrc = "$main::home/.bashrc";
if (-e $bashrc) { # if they don't have one, don't bother checking
local $/;
undef $/;
open BASHRC, "<$bashrc" or die "Can't open $bashrc: $!";
my $bashrc = <BASHRC>;
close BASHRC or die "Can't close $bashrc: $!";
return if ($bashrc =~ /^[^#\n]*PROMPT_COMMAND/m);
}
print "\nAttempting to add ourselves to $bashrc...";
my $program = abs_path($0);
open BASHRC, ">>$bashrc" or die "Can't open $bashrc: $!";
print BASHRC "\n\n# Added by $program\nexport PROMPT_COMMAND=\"$program --check\"\n"
or die "Can't write to $bashrc: $!";
close BASHRC or die "Can't close $bashrc: $!";
print "done.\n\n";
print "You will need to log out and back in to get\n";
print "automatic notifications.\n";
}
sub already_running_in_background {
( run in 2.354 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )