SVN: toys/rsget.pl/rsget.pl
sparky
sparky at pld-linux.org
Wed Sep 30 00:33:51 CEST 2009
Author: sparky
Date: Wed Sep 30 00:33:50 2009
New Revision: 10637
Modified:
toys/rsget.pl/rsget.pl (contents, props changed)
Log:
- prepare for config file
Modified: toys/rsget.pl/rsget.pl
==============================================================================
--- toys/rsget.pl/rsget.pl (original)
+++ toys/rsget.pl/rsget.pl Wed Sep 30 00:33:50 2009
@@ -15,6 +15,7 @@
use Time::HiRes;
use RSGet::Line;
use RSGet::Tools;
+use RSGet::AutoUpdate;
use RSGet::Processor;
use RSGet::Curl;
use RSGet::FileList;
@@ -25,44 +26,58 @@
use RSGet::ListManager;
$SIG{CHLD} = "IGNORE";
+set_rev qq$Id$;
+
%settings = (
+ auto_update => undef,
backup => "copy,move",
- # backup_suf => "~",
+ backup_suf => undef,
logging => 0,
list_lock => '.${file}.swp', # vim-like swap file
+ http_port => undef,
+ list_file => undef,
errorlog => 0,
outdir => '.',
workdir => '.',
);
+my @save_ARGV = @ARGV;
+
+sub set
+{
+ my ( $key, $val ) = @_;
+ if ( exists $settings{ $key } ) {
+ $settings{ $key } = $val;
+ } else {
+ warn "Option '$key' does not exist\n";
+ }
+}
+
# read options
-my $http = undef;
-my $flist = undef;
while ( my $arg = shift @ARGV ) {
- if ( $arg eq '-i' ) {
+ if ( $arg eq '-h' ) {
+ die "No help here, sorrt. For real help read documentation.\n";
+ } elsif ( $arg eq '-i' ) {
my $ifs = shift @ARGV || die "argument missing";
RSGet::Dispatch::add_interface( $ifs );
} elsif ( $arg eq '-p' ) {
- require RSGet::HTTPServer;
- my $port = shift @ARGV || die "port missing";
- $http = new RSGet::HTTPServer( $port );
- p "HTTP server " . ( $http ? "started on port $port" : "failed" ) ;
- } elsif ( $arg eq '-s' ) {
- my $data = shift @ARGV;
- my $o = eval "{ $data }";
- die "Can't process settings: $@\n" if $@;
- if ( $o and ref $o ) {
- hadd \%settings, %$o;
- }
+ set( "http_port", shift @ARGV || die "port missing" );
} elsif ( $arg =~ s/^--(.*?)=// ) {
- $settings{ $1 } = $arg;
+ set( $1, $arg );
} elsif ( $arg =~ s/^--(.*)// ) {
my $key = $1;
my $var = shift @ARGV;
die "argument missing" unless defined $var;
- $settings{ $key } = $var;
+ set( $key, $var );
} else {
- $flist = $arg;
+ set( "list_file", $arg );
+ }
+}
+
+if ( $settings{auto_update} ) {
+ if ( RSGet::AutoUpdate::update() ) {
+ warn "Update successfull, restarting\n";
+ exec $0, @save_ARGV;
}
}
if ( keys %settings ) {
@@ -70,7 +85,18 @@
hprint \%settings;
}
-RSGet::FileList::set_file( $flist );
+RSGet::FileList::set_file( $settings{list_file} );
+
+my $http = undef;
+if ( $settings{http_port} ) {
+ require RSGet::HTTPServer;
+ $http = new RSGet::HTTPServer( $settings{http_port} );
+ p "HTTP server " . ( $http ? "started on port $settings{http_port}" : "failed" ) ;
+}
+
+if ( $settings{interfaces} ) {
+ RSGet::Dispatch::add_interface( $settings{interfaces} );
+}
new RSGet::Line();
More information about the pld-cvs-commit
mailing list