SVN: toys/rsget.pl: Get/MegaUpload RSGet/AutoUpdate.pm RSGet/HTTPRequest.pm RSGet/Tools.pm rsget.pl
sparky
sparky at pld-linux.org
Wed Sep 30 01:55:01 CEST 2009
Author: sparky
Date: Wed Sep 30 01:55:01 2009
New Revision: 10640
Modified:
toys/rsget.pl/Get/MegaUpload
toys/rsget.pl/RSGet/AutoUpdate.pm
toys/rsget.pl/RSGet/HTTPRequest.pm
toys/rsget.pl/RSGet/Tools.pm
toys/rsget.pl/rsget.pl
Log:
- support config file
- automatically download new getters from svn
Modified: toys/rsget.pl/Get/MegaUpload
==============================================================================
--- toys/rsget.pl/Get/MegaUpload (original)
+++ toys/rsget.pl/Get/MegaUpload Wed Sep 30 01:55:01 2009
@@ -11,8 +11,8 @@
pre:
use Image::Magick;
- my $mu_font_db = $main::data_path . "/data/mu_font_db.png";
- die "Font DB '$mu_font_db' does not exist\n" unless -r $mu_font_db;
+ my $mu_font_db = data_file( "mu_font_db.png" );
+ die "Font DB '$mu_font_db' does not exist\n" unless $mu_font_db;
start:
( my $uri = $-{_uri} ) =~ s#^(http://(?:www\.)?)(?:megarotic|sexuploader)#$1megaporn#;
Modified: toys/rsget.pl/RSGet/AutoUpdate.pm
==============================================================================
--- toys/rsget.pl/RSGet/AutoUpdate.pm (original)
+++ toys/rsget.pl/RSGet/AutoUpdate.pm Wed Sep 30 01:55:01 2009
@@ -3,13 +3,37 @@
use strict;
use warnings;
use RSGet::Tools;
+use Cwd;
set_rev qq$Id$;
sub update
{
- warn "Can't update yet\n";
- return 0;
+ unless ( require_prog( "svn" ) ) {
+ warn "SVN client required\n";
+ return 0;
+ }
+ my $start_dir = getcwd();
+ chdir $main::configdir or die "Can't chdir to '$main::configdir'\n";
+
+ warn "Updating from SVN\n";
+ my $updated = 0;
+ foreach my $dir ( qw(data RSGet Get Link) ) {
+ my $last;
+ open SVN, "-|", "svn", "co", "$settings{svn_uri}/$dir";
+ while ( <SVN> ) {
+ chomp;
+ $updated++ if /^.{4}\s+$dir/;
+ $last = $_;
+ }
+ close SVN;
+ unless ( $last =~ /Checked out revision \d+/ ) {
+ warn "Uppdate failed ?\n";
+ }
+ }
+ chdir $start_dir;
+
+ return $updated;
}
1;
Modified: toys/rsget.pl/RSGet/HTTPRequest.pm
==============================================================================
--- toys/rsget.pl/RSGet/HTTPRequest.pm (original)
+++ toys/rsget.pl/RSGet/HTTPRequest.pm Wed Sep 30 01:55:01 2009
@@ -52,7 +52,7 @@
$headers->{Content_Type} = sprintf "text/%s; charset=utf-8", ($1 eq "js" ? "javascript" : "css");
local $/ = undef;
- open F_IN, '<', $main::data_path . "/data/" . $file;
+ open F_IN, '<', data_file( $file );
$_ = <F_IN>;
close F_IN;
@@ -648,7 +648,7 @@
} else {
$ct = "image/png";
local $/ = undef;
- open F_IN, '<', $main::data_path . "/data/error.png";
+ open F_IN, '<', data_file( "error.png" );
$data = <F_IN>;
close F_IN;
}
Modified: toys/rsget.pl/RSGet/Tools.pm
==============================================================================
--- toys/rsget.pl/RSGet/Tools.pm (original)
+++ toys/rsget.pl/RSGet/Tools.pm Wed Sep 30 01:55:01 2009
@@ -7,7 +7,7 @@
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(set_rev s2string bignum de_ml hadd hprint p isotime require_prog
- dump_to_file randomize %getters %settings);
+ data_file dump_to_file randomize %getters %settings);
@EXPORT_OK = qw();
our %settings;
@@ -111,6 +111,16 @@
return undef;
}
+sub data_file
+{
+ my $file = shift;
+ my $f = "$main::configdir/data/$file";
+ return $f if -r $f;
+ $f = "$main::data_path/data/$file";
+ return $f if -r $f;
+ return undef;
+}
+
sub dump_to_file
{
my $data = shift;
Modified: toys/rsget.pl/rsget.pl
==============================================================================
--- toys/rsget.pl/rsget.pl (original)
+++ toys/rsget.pl/rsget.pl Wed Sep 30 01:55:01 2009
@@ -7,9 +7,18 @@
use warnings;
our $data_path;
+our $configdir;
BEGIN {
$data_path = $ENV{PWD};
unshift @INC, $data_path;
+
+ my $cd = "$ENV{HOME}/.rsget.pl";
+ if ( -r $cd and -d $cd ) {
+ $configdir = $cd;
+ unshift @INC, $configdir;
+ } else {
+ $configdir = $data_path;
+ }
}
use Time::HiRes;
@@ -30,6 +39,7 @@
%settings = (
auto_update => undef,
+ svn_uri => 'http://svn.pld-linux.org/svn/toys/rsget.pl',
backup => "copy,move",
backup_suf => undef,
logging => 0,
@@ -53,6 +63,20 @@
}
}
+if ( -r "$configdir/config" ) {
+ open F_IN, "<", "$configdir/config";
+ while ( <F_IN> ) {
+ next if /^\s*(?:#.*)?$/;
+ chomp;
+ if ( s/^\s*([a-z_]+)\s*=\s*// ) {
+ set( $1, $_ );
+ next;
+ }
+ warn "Incorrect config line: $_\n";
+ }
+ close F_IN;
+}
+
# read options
while ( my $arg = shift @ARGV ) {
if ( $arg eq '-h' ) {
@@ -77,7 +101,7 @@
if ( $settings{auto_update} ) {
if ( RSGet::AutoUpdate::update() ) {
warn "Update successfull, restarting\n";
- exec $0, @save_ARGV;
+ exec $0, @save_ARGV, "--auto_update", 0;
}
}
if ( keys %settings ) {
@@ -101,19 +125,24 @@
new RSGet::Line();
# add getters
-foreach my $type ( qw(Get Link) ) {
- foreach ( sort glob "$data_path/$type/*" ) {
+foreach my $path ( ( $configdir, $data_path ) ) {
+ foreach my $type ( qw(Get Link) ) {
+ foreach ( sort glob "$path/$type/*" ) {
next if /~$/;
next if m{/\.[^/]*$};
( my $file = $_ ) =~ s#.*/##;
+ next if exists $getters{ $type . "::" . $file };
my ( $pkg, $getter ) = RSGet::Processor::read_file( $type, $_ );
my $msg = "${type}/$file: failed";
if ( $pkg and $getter ) {
$getters{ $pkg } = $getter;
$msg = "$pkg: added\n";
+ new RSGet::Line( "INIT: ", $msg );
+ } else {
+ warn "$msg\n";
}
- new RSGet::Line( "INIT: ", $msg );
}
+ }
}
new RSGet::Line();
new RSGet::Line( "rsget.pl started successfully" );
More information about the pld-cvs-commit
mailing list