Difference between revisions of "Rp"
From Organic Design wiki
m |
(make rp work for Win32 too (use libwww instead of curl)) |
||
Line 1: | Line 1: | ||
#!/usr/bin/perl | #!/usr/bin/perl | ||
+ | use HTTP::Request; | ||
+ | use LWP::UserAgent; | ||
+ | use Cwd; | ||
+ | our $cwd = cwd; | ||
+ | our $ux = ($cwd =~ m/^\//); | ||
+ | $ux ? $cwd = cwd : $cwd =~ s/\//\\/g; | ||
+ | $cwd =~ s/\//\\/g unless $cwd =~ m/^\//; | ||
+ | $cwd =~ s/[\\\/]$//g; | ||
+ | $client = LWP::UserAgent->new( cookie_jar => {} ); | ||
$wiki = "http://www.organicdesign.co.nz/wiki/index.php"; | $wiki = "http://www.organicdesign.co.nz/wiki/index.php"; | ||
− | $ps = 'ps lx'; | + | $ps = $ux ? 'ps lx|egrep peerd:' : ''; |
− | $ | + | $qxps = qx($ps); |
− | |||
print "\n"; | print "\n"; | ||
− | |||
− | |||
− | |||
− | # | + | # 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"; | |
− | + | my $fileSync = $client->request(HTTP::Request->new(GET => "$wiki?title=Bender/fileSync&xpath:view:")); | |
− | + | $fileSync = $fileSync->content; | |
− | + | $fileSync =~ s/<\/ul>.+$//ms; | |
+ | %articles = $fileSync =~ /<li>.+?title="(.+?)">(.+?)<\/a>/g; | ||
} | } | ||
− | + | else { | |
− | + | print "Retrieving files specified in command line args...\n"; | |
− | + | $articles{$_} = "/home/peerd/$_" for @ARGV; | |
− | |||
− | |||
− | |||
} | } | ||
− | # | + | # Retrieve each article and save to specified filepath |
− | + | for my $article (keys %articles) { | |
− | + | print "\t$article\n"; | |
− | if ($ | + | if (open FH, '>', $ux ? $articles{$article} : "$cwd/$article") { |
− | + | binmode FH; | |
− | + | $article = $client->request(HTTP::Request->new(GET => "$wiki?title=$article&action=raw"))->content; | |
+ | print FH "$article\n"; | ||
+ | close FH; | ||
+ | } | ||
} | } | ||
− | # | + | # Don't do any compilation unless ux |
− | + | exit unless $ux; | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
# Compile husk and format output | # Compile husk and format output | ||
print "\nCompiling...\n"; | print "\nCompiling...\n"; | ||
− | $err = qx( gcc | + | $err = qx( gcc -o /home/peerd/husk.bin /home/peerd/husk.c 2>&1 ); |
$err =~ s/^In file.+?$//mg; | $err =~ s/^In file.+?$//mg; | ||
$err =~ s/^\s+from/\nfrom/mg; | $err =~ s/^\s+from/\nfrom/mg; | ||
Line 74: | Line 55: | ||
if ($err) { print "$err\n\nAborting: There are errors or warnings!\nNothing killed or executed.\n\n" } | if ($err) { print "$err\n\nAborting: There are errors or warnings!\nNothing killed or executed.\n\n" } | ||
else { | else { | ||
− | print " | + | print "\nCompiled successfully!\n"; |
− | # | + | |
− | + | # kill currently running instances of peerd | |
− | print " | + | if ($qxps) { |
− | qx( /home/peerd/husk.bin | + | print "Killing currently running peerd instances:\n"; |
+ | print $qxps; | ||
+ | for (split /\n/, $qxps) { qx(kill $1) if /^.+?([0-9]{2,}).+?\d+:\d\d\s*(.+)/ } | ||
+ | } else { print "Nothing to kill :-(\n" } | ||
+ | |||
+ | print "Passing execution over now...\n\n"; | ||
+ | qx( /home/peerd/husk.bin ); | ||
print qx($ps); | print qx($ps); | ||
} | } |
Revision as of 08:01, 25 July 2006
- !/usr/bin/perl
use HTTP::Request; use LWP::UserAgent; use Cwd;
our $cwd = cwd; our $ux = ($cwd =~ m/^\//); $ux ? $cwd = cwd : $cwd =~ s/\//\\/g; $cwd =~ s/\//\\/g unless $cwd =~ m/^\//; $cwd =~ s/[\\\/]$//g; $client = LWP::UserAgent->new( cookie_jar => {} ); $wiki = "http://www.organicdesign.co.nz/wiki/index.php"; $ps = $ux ? 'ps lx|egrep peerd:' : ; $qxps = qx($ps); print "\n";
- 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"; my $fileSync = $client->request(HTTP::Request->new(GET => "$wiki?title=Bender/fileSync&xpath:view:")); $fileSync = $fileSync->content; $fileSync =~ s/<\/ul>.+$//ms;
%articles = $fileSync =~ /
- Retrieve each article and save to specified filepath
- Don't do any compilation unless ux
- Compile husk and format output
- Execute compiled result if compiled without any problems