- !/usr/bin/perl
$wiki = "http://www.organicdesign.co.nz/wiki/index.php";
$ps = 'ps lx';
$grep = "$ps|egrep peerd[:]";
print "\n";
$qxps = [split /^/, qx($ps)]->[0].qx($grep); # adds column header
$k = $#{[split /^/, $qxps]};
- rp l
- - lists currently running peerd's and exits
if ($ARGV[0] eq 'l') {
if ($k) { print ("$qxps$k instance".($k>1?"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 ($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 = qx(curl -s "$wiki?title=Bender/fileSync&xpath:view:");
$fileSync =~ s/<\/ul>.+$//ms;
%articles = $fileSync =~ /
.+?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 (open FH, '>', $articles{$article}) {
binmode FH;
print FH qx(curl -s "$wiki?title=$article&action=raw")."\n";
close FH;
}
}
}
- Compile husk and format output
print "\nCompiling...\n";
$err = qx( gcc -lSDL -lSDL_image -o /home/peerd/husk.bin /home/peerd/husk.c 2>&1 );
$err =~ s/^In file.+?$//mg;
$err =~ s/^\s+from/\nfrom/mg;
$err =~ s/^/\t/mg;
$err =~ s/\/home\/peerd\///g;
$err =~ s/^\s+//g;
$err =~ s/\s+$//g;
- Execute compiled result if compiled without any problems
if ($err) { print "$err\n\nAborting: There are errors or warnings!\nNothing killed or executed.\n\n" }
else {
print "\nCompiled successfully!\n";
# kill currently running instances of peerd
if ($qxps) {
print "Killing currently running peerd instances:\n$qxps";
for (split /^/, $qxps) { qx(kill -9 $1) if /^.+?([0-9]{2,}).+?\d+:\d\d\s*(.+)/ }
} else { print "Nothing to kill :-(\n" }
# Start new instance
$k = $k?"$k item".($k>1?"s":"")." killed, s":"S";
print $k."tarting new instance now...\n\n";
qx( /home/peerd/husk.bin Gir port=2012 );
print qx($ps);
}