Difference between revisions of "Rp"
m |
(bugger - somegow had started editing an old revision...) |
||
| Line 3: | Line 3: | ||
use LWP::UserAgent; | use LWP::UserAgent; | ||
use Cwd; | use Cwd; | ||
| + | print "\n"; | ||
| − | # | + | # Set up a www-user-agent and source-url for syncing |
| − | + | $wiki = "http://www.organicdesign.co.nz/wiki/index.php"; | |
| − | + | $client = LWP::UserAgent->new( cookie_jar => {} ); | |
| − | |||
| − | $ | ||
| − | |||
# Command to list running peerd's (or null for Win32) | # Command to list running peerd's (or null for Win32) | ||
| − | $ps = $ | + | if ($ux) { |
| − | $qxps = | + | $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 |
| − | if ($ | + | # - kills currently running peerd's and exits |
| − | + | if ($ux and $ARGV[0] eq 'k') { | |
| − | + | kp; | |
| − | + | exit; | |
| − | |||
| − | |||
} | } | ||
| − | + | ||
| − | print "\ | + | # 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') { | |
| − | if ( | + | |
| − | + | # 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 in sync-list and save to specified filepath | ||
| + | for my $article (keys %articles) { | ||
| + | print "\t$article\n"; | ||
| + | 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; | ||
| + | } | ||
| + | } | ||
| + | |||
} | } | ||
| Line 48: | Line 74: | ||
# Compile husk and format output | # Compile husk and format output | ||
print "\nCompiling...\n"; | print "\nCompiling...\n"; | ||
| − | $err = qx( gcc -o /home/peerd/husk.bin /home/peerd/husk.c 2>&1 ); | + | $err = qx( gcc -lSDL -lSDL_image -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 59: | Line 85: | ||
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 "Compiled successfully!\n"; |
| − | + | # Kill running peers (kp) and start a new instance | |
| − | # | + | kp; |
| − | + | print "Starting new instance now...\n\n"; | |
| − | + | qx( /home/peerd/husk.bin Gir port=2012 ); | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | print " | ||
| − | qx( /home/peerd/husk.bin ); | ||
print qx($ps); | print qx($ps); | ||
} | } | ||
Revision as of 23:47, 25 July 2006
- !/usr/bin/perl
use HTTP::Request; use LWP::UserAgent; use Cwd; print "\n";
- Set up a www-user-agent and source-url for syncing
$wiki = "http://www.organicdesign.co.nz/wiki/index.php"; $client = LWP::UserAgent->new( cookie_jar => {} );
- 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"; my $fileSync = $client->request(HTTP::Request->new(GET => "$wiki?title=Bender/fileSync&xpath:view:")); $fileSync = $fileSync->content; $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



