Difference between revisions of "Rp"

From Organic Design wiki
m
(fix for mac)
Line 18: Line 18:
 
$wiki = "http://www.organicdesign.co.nz/wiki/index.php";
 
$wiki = "http://www.organicdesign.co.nz/wiki/index.php";
 
sub url {
 
sub url {
my $doc = shift;
+
        my $doc = shift;
return qx(curl -s $doc) unless $lwp;
+
        print "url: $doc\n";
$doc = $client->request(HTTP::Request->new(GET=>$doc));
+
        return qx(curl -s $doc) unless $lwp;
return $doc->content;
+
        $doc = $client->request(HTTP::Request->new(GET=>$doc));
}
+
        return $doc->content;
 +
        }
  
 
# Command to list running peerd's (or null for Win32)
 
# Command to list running peerd's (or null for Win32)
 
if ($ux) {
 
if ($ux) {
$qxps = [split /^/, qx($ps)]->[0].qx($grep); # adds column header
+
        $qxps = [split /^/, qx($ps)]->[0].qx($grep); # adds column header
$k = $#{[split /^/, $qxps]};
+
        $k = $#{[split /^/, $qxps]};
$s = $k>1?'s':'';
+
        $s = $k>1?'s':'';
} else $qxps = '';
+
        } else { $qxps = ''; }
  
 
# sub to kill currently running instances of peerd
 
# sub to kill currently running instances of peerd
 
sub kp {
 
sub kp {
if ($k) {
+
        if ($k) {
for (split /^/, $qxps) { qx(kill -9 $1) if /^.+?([0-9]{2,}).+?\d+:\d\d\s*(.+)/ }
+
                for (split /^/, $qxps) { qx(kill -9 $1) if /^.+?([0-9]{2,}).+?\d+:\d\d\s*(.+)/ }
print "\n$qxps$k instance$s killed.\n\n";
+
                print "\n$qxps$k instance$s killed.\n\n";
} else { print "Nothing to kill :-(\n\n" }
+
                } else { print "Nothing to kill :-(\n\n" }
}
+
        }
  
 
# rp k
 
# rp k
 
# - kills currently running peerd's and exits
 
# - kills currently running peerd's and exits
 
if ($ux and $ARGV[0] eq 'k') {
 
if ($ux and $ARGV[0] eq 'k') {
kp;
+
        kp;
exit;
+
        exit;
}
+
        }
  
 
# rp l
 
# rp l
 
# - lists currently running peerd's and exits
 
# - lists currently running peerd's and exits
 
if ($ux and $ARGV[0] eq 'l') {
 
if ($ux and $ARGV[0] eq 'l') {
if ($k) { print ("$qxps$k instance$s of peerd running.\n\n") }
+
        if ($k) { print ("$qxps$k instance$s of peerd running.\n\n") }
else { print "There are no instances of peerd running.\n\n" }
+
        else { print "There are no instances of peerd running.\n\n" }
exit;
+
        exit;
}
+
        }
  
 
# rp c
 
# rp c
Line 58: Line 59:
 
if ($ux and $ARGV[0] ne 'c') {
 
if ($ux and $ARGV[0] ne 'c') {
  
# Sync files specified in args, or obtain a list of files from Benders fileSync list
+
        # Sync files specified in args, or obtain a list of files from Benders fileSync list
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 = 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;
}
+
                }
else {
+
        else {
print "Retrieving files specified in command line args...\n";
+
                print "Retrieving files specified in command line args...\n";
$articles{$_} = "/home/peerd/$_" for @ARGV;
+
                $articles{$_} = "/home/peerd/$_" for @ARGV;
}
+
                }
  
# Retrieve each article in sync-list and save to specified filepath
+
        # Retrieve each article in sync-list and save to specified filepath
for my $article (keys %articles) {
+
        for my $article (keys %articles) {
print "\t$article\n";
+
                print "\t$article\n";
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";
+
                        print FH url("$wiki?title=$article&action=raw")."\n";
close FH;
+
                        close FH;
}
+
                        }
}
+
                }
  
}
+
        }
  
 
# Don't do any compilation unless ux
 
# Don't do any compilation unless ux
Line 98: Line 99:
 
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 "Compiled successfully!\n";
+
        print "Compiled successfully!\n";
# Kill running peers (kp) and start a new instance
+
        # Kill running peers (kp) and start a new instance
kp;
+
        kp;
print "Starting new instance now...\n\n";
+
        print "Starting new instance now...\n\n";
qx( /home/peerd/husk.bin Gir port=2012 );
+
        qx( /home/peerd/husk.bin Gir port=2012 );
print qx($ps);
+
        print qx($ps);
}
+
        }

Revision as of 06:15, 26 July 2006

  1. !/usr/bin/perl

print "\n";

  1. 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;

  1. 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;
       print "url: $doc\n";
       return qx(curl -s $doc) unless $lwp;
       $doc = $client->request(HTTP::Request->new(GET=>$doc));
       return $doc->content;
       }
  1. 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 = ; }
  1. 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" }
       }
  1. rp k
  2. - kills currently running peerd's and exits

if ($ux and $ARGV[0] eq 'k') {

       kp;
       exit;
       }
  1. rp l
  2. - 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;
       }
  1. rp c
  2. - 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 =~ /

  • .+?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; print FH url("$wiki?title=$article&action=raw")."\n"; close FH; } } }
    1. Don't do any compilation unless ux
    exit unless $ux;
    1. 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;
    1. 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 "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($ps); }