SVN: toys/rsget.pl/RSGet: Main.pm Plugin.pm

sparky sparky at pld-linux.org
Mon Dec 6 00:37:19 CET 2010


Author: sparky
Date: Mon Dec  6 00:37:19 2010
New Revision: 11950

Modified:
   toys/rsget.pl/RSGet/Main.pm
   toys/rsget.pl/RSGet/Plugin.pm
Log:
- hack-in support for premium plugins, not very pretty, but works


Modified: toys/rsget.pl/RSGet/Main.pm
==============================================================================
--- toys/rsget.pl/RSGet/Main.pm	(original)
+++ toys/rsget.pl/RSGet/Main.pm	Mon Dec  6 00:37:19 2010
@@ -191,6 +191,7 @@
 	my $user = shift;
 	my $die = 0;
 	foreach my $s ( sort keys %$settings ) {
+		next if $s =~ /^premium_/;
 		my $v = $settings->{ $s };
 		my $def = $main::def_settings{ $s };
 		unless ( $def ) {
@@ -292,8 +293,8 @@
 	if ( setting( "use_svn" ) eq "yes" ) {
 		unshift @paths, $main::local_path;
 	}
-	foreach my $path ( @paths ) {
-		foreach my $type ( qw(Get Video Audio Image Link Direct) ) {
+	foreach my $type ( qw(Premium Get Video Audio Image Link Direct) ) {
+		foreach my $path ( @paths ) {
 			my $dir = "$path/$type";
 			next unless -d $dir;
 			my $count = 0;

Modified: toys/rsget.pl/RSGet/Plugin.pm
==============================================================================
--- toys/rsget.pl/RSGet/Plugin.pm	(original)
+++ toys/rsget.pl/RSGet/Plugin.pm	Mon Dec  6 00:37:19 2010
@@ -11,6 +11,7 @@
 use RSGet::Tools;
 set_rev qq$Id$;
 
+my @getters;
 my %getters;
 
 sub read_file($)
@@ -258,9 +259,24 @@
 	return 0 if m{/\.[^/]*$};
 	( my $file = $_ ) =~ s#.*/##;
 	return 0 if exists $getters{ $type . "::" . $file };
+	if ( $type eq "Premium" ) {
+		my $opt = "premium_" . lc $file;
+		def_settings(
+			$opt => {
+				desc => "Premium account information for ${type}/$file",
+			}
+		);
+
+		unless ( setting( $opt ) ) {
+			warn "${type}/$file: $opt option must be set for this plugin; failed\n"
+				if verbose( 2 );
+			return 0;
+		}
+	}
 	my $plugin = new RSGet::Plugin( $type, $_ );
 	if ( $plugin ) {
 		my $pkg = $plugin->{pkg};
+		push @getters, $plugin;
 		$getters{ $pkg } = $plugin;
 		new RSGet::Line( "INIT: ", "$pkg: Added" )
 			if verbose( 2 );
@@ -280,7 +296,7 @@
 		return $from_uri_last if $from_uri_last->can_do( $uri );
 	}
 	my $direct = undef;
-	foreach my $getter ( values %getters ) {
+	foreach my $getter ( @getters ) {
 		if ( $getter->can_do( $uri ) ) {
 			if ( $getter->{class} eq "Direct" ) {
 				$direct = $getter;


More information about the pld-cvs-commit mailing list