Difference between revisions of "Rp"
m |
(fallback to curl if no lwp) |
||
Line 1: | Line 1: | ||
#!/usr/bin/perl | #!/usr/bin/perl | ||
− | + | print "\n"; | |
− | + | ||
+ | # Get CWD and determine OS | ||
use Cwd; | use Cwd; | ||
− | + | our $cwd = cwd; | |
+ | our $ux = ($cwd =~ m/^\//); | ||
+ | $ux ? $cwd = cwd : $cwd =~ s/\//\\/g; | ||
+ | $cwd =~ s/\//\\/g unless $cwd =~ m/^\//; | ||
+ | $cwd =~ s/[\\\/]$//g; | ||
+ | |||
+ | # Try and use LWP otherwise fallback to curl | ||
+ | eval 'use HTTP::Request'; | ||
+ | $lwp = $@?1:0; | ||
+ | eval 'use LWP::UserAgent'; | ||
+ | $lwp = 0 if $@; | ||
+ | $client = LWP::UserAgent->new( cookie_jar => {} ) if $lwp; | ||
+ | $wiki = "http://www.organicdesign.co.nz/wiki/index.php"; | ||
+ | sub url { | ||
+ | my $doc = shift; | ||
+ | return qx(curl -s $doc) unless $lwp; | ||
+ | $doc = $client->request(HTTP::Request->new(GET=>$doc)); | ||
+ | return $doc->content; | ||
+ | } | ||
# Set up a www-user-agent and source-url for syncing | # Set up a www-user-agent and source-url for syncing | ||
− | |||
− | |||
# Command to list running peerd's (or null for Win32) | # Command to list running peerd's (or null for Win32) | ||
Line 46: | Line 63: | ||
if ($#ARGV<0) { | if ($#ARGV<0) { | ||
print "Retrieving files specified in OD:Bender/fileSync list...\n"; | print "Retrieving files specified in OD:Bender/fileSync list...\n"; | ||
− | + | $fileSync = url("$wiki?title=Bender/fileSync&xpath:view:"); | |
− | |||
$fileSync =~ s/<\/ul>.+$//ms; | $fileSync =~ s/<\/ul>.+$//ms; | ||
%articles = $fileSync =~ /<li>.+?title="(.+?)">(.+?)<\/a>/g; | %articles = $fileSync =~ /<li>.+?title="(.+?)">(.+?)<\/a>/g; | ||
Line 61: | Line 77: | ||
if (open FH, '>', $ux ? $articles{$article} : "$cwd/$article") { | if (open FH, '>', $ux ? $articles{$article} : "$cwd/$article") { | ||
binmode FH; | binmode FH; | ||
− | + | print FH url("$wiki?title=$article&action=raw")."\n"; | |
− | |||
close FH; | close FH; | ||
} | } |
Revision as of 05:52, 26 July 2006
- !/usr/bin/perl
print "\n";
- Get CWD and determine OS
use Cwd; our $cwd = cwd; our $ux = ($cwd =~ m/^\//); $ux ? $cwd = cwd : $cwd =~ s/\//\\/g; $cwd =~ s/\//\\/g unless $cwd =~ m/^\//; $cwd =~ s/[\\\/]$//g;
- Try and use LWP otherwise fallback to curl
eval 'use HTTP::Request'; $lwp = $@?1:0; eval 'use LWP::UserAgent'; $lwp = 0 if $@; $client = LWP::UserAgent->new( cookie_jar => {} ) if $lwp; $wiki = "http://www.organicdesign.co.nz/wiki/index.php"; sub url { my $doc = shift; return qx(curl -s $doc) unless $lwp; $doc = $client->request(HTTP::Request->new(GET=>$doc)); return $doc->content; }
- Set up a www-user-agent and source-url for syncing
- Command to list running peerd's (or null for Win32)
if ($ux) { $qxps = [split /^/, qx($ps)]->[0].qx($grep); # adds column header $k = $#{[split /^/, $qxps]}; $s = $k>1?'s':; } else $qxps = ;
- sub to kill currently running instances of peerd
sub kp { if ($k) { for (split /^/, $qxps) { qx(kill -9 $1) if /^.+?([0-9]{2,}).+?\d+:\d\d\s*(.+)/ } print "\n$qxps$k instance$s killed.\n\n"; } else { print "Nothing to kill :-(\n\n" } }
- rp k
- - kills currently running peerd's and exits
if ($ux and $ARGV[0] eq 'k') { kp; exit; }
- rp l
- - lists currently running peerd's and exits
if ($ux and $ARGV[0] eq 'l') { if ($k) { print ("$qxps$k instance$s of peerd running.\n\n") } else { print "There are no instances of peerd running.\n\n" } exit; }
- rp c
- - compiles without syncing any files
if ($ux and $ARGV[0] ne 'c') {
# Sync files specified in args, or obtain a list of files from Benders fileSync list if ($#ARGV<0) { print "Retrieving files specified in OD:Bender/fileSync list...\n"; $fileSync = url("$wiki?title=Bender/fileSync&xpath:view:"); $fileSync =~ s/<\/ul>.+$//ms;
%articles = $fileSync =~ /
- Don't do any compilation unless ux
- Compile husk and format output
- Execute compiled result if compiled without any problems