[siesta-commit] siesta/bin nacho,1.7,1.8

[prev] [thread] [next] [lurker] [Date index for 2002/09/09]

From: muttley
Subject: [siesta-commit] siesta/bin nacho,1.7,1.8
Date: 12:16 on 09 Sep 2002
Update of /cvsroot/siesta/siesta/bin
In directory usw-pr-cvs1:/tmp/cvs-serv26854/bin

Modified Files:
	nacho 
Log Message:
Config options for plugins


Index: nacho
===================================================================
RCS file: /cvsroot/siesta/siesta/bin/nacho,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- nacho	6 Sep 2002 13:16:37 -0000	1.7
+++ nacho	9 Sep 2002 11:16:08 -0000	1.8
@@ -14,7 +14,13 @@
 	       show-list show-user create-alias
 	       show-users-list show-lists-user
 	       add-user-list remove-user-list
-	       list-all-plugins list-plugins	
+	       list-all-plugins list-plugins
+	       list-plugin-options	
+	       list-plugin-config-default
+	       list-plugin-config-user
+	       list-plugin-config-list
+	       list-plugin-config-userlist
+		
 	    );
  
 # not enough arguments
@@ -463,6 +469,172 @@
                 $a++;
         }
 }
+
+
+=head2 list-plugin-options [plugin name]
+
+List all the options for a particular plugin.
+
+=cut
+
+sub  list_plugin_options 
+{
+	my $plugin_id = shift || die "You must pass a plugin name\n";
+
+	my %plugins = map { $_ => 1 } Siesta->list_all_plugins;
+	
+	die "Not a valid plugin\n" unless $plugins{$plugin_id};
+
+	my $class = "Siesta::Plugin::$plugin_id";
+
+	eval "require $class";
+	die $@ if $@;
+	my $plugin =  $class->new();
+	
+	my $options = $plugin->options();
+
+	print "\n\nThe plugin $plugin_id has the following options :\n";
+	foreach my $option (keys %{$options})
+	{
+		print " - ",$option," : ",$options->{$option}->{description},"\n";
+	}
+	print "\n";
+	
+
+}
+
+=head2 list-plugin-config-default [ plugin id ]
+
+List the current default config options 	
+
+=cut
+
+sub list_plugin_config_default 
+{
+	my $plugin_id = shift || die "You must pass a plugin name\n";
+
+        my %plugins = map { $_ => 1 } Siesta->list_all_plugins;
+
+        die "Not a valid plugin\n" unless $plugins{$plugin_id};
+
+	_list_plugin_config($plugin_id, undef, undef);
+}
+
+
+=head2 list-plugin-config-user [ plugin id ] [ user id ]
+
+List the current per-user options for this user and this plugin	
+
+=cut
+
+sub list_plugin_config_user
+{
+	my $plugin_id = shift || die "You must pass a plugin name\n";
+
+        my %plugins = map { $_ => 1 } Siesta->list_all_plugins;
+
+        die "Not a valid plugin\n" unless $plugins{$plugin_id};
+
+	my $user_id = shift || die "You must pass a user id\n";
+
+
+	_list_plugin_config($plugin_id, $user_id, undef);
+}
+
+=head2 list-plugin-config-list [ plugin id ] [ list id ]
+
+List the current per-list options for this list and this plugin	
+
+=cut
+
+sub list_plugin_config_list
+{
+	my $plugin_id = shift || die "You must pass a plugin name\n";
+
+        my %plugins = map { $_ => 1 } Siesta->list_all_plugins;
+
+        die "Not a valid plugin\n" unless $plugins{$plugin_id};
+
+	my $list_id = shift || die "You must pass a list id\n";
+
+
+	_list_plugin_config($plugin_id, undef, $list_id);
+}
+
+=head2 list-plugin-config-userlist [ plugin id ] [ user id ] [ list id ]
+
+List the current per-user options for this user on this list and this plugin	
+
+=cut
+
+sub list_plugin_config_userlist
+{
+	my $plugin_id = shift || die "You must pass a plugin name\n";
+
+        my %plugins = map { $_ => 1 } Siesta->list_all_plugins;
+
+        die "Not a valid plugin\n" unless $plugins{$plugin_id};
+
+	my $user_id = shift || die "You must pass a user id\n";
+	my $list_id = shift || die "You must pass a list id\n";
+
+
+	_list_plugin_config($plugin_id, $user_id, $list_id);
+}
+
+
+
+
+sub _list_plugin_config
+{
+	my ($plugin_id, $user_id, $list_id) = @_;
+
+        my $class = "Siesta::Plugin::$plugin_id";
+
+        eval "require $class";
+        die $@ if $@;
+        my $plugin =  $class->new();
+	
+	$user_id ||= -1;
+	$list_id ||= -1;
+
+	my $user = Siesta::User->new($user_id) || undef;
+	my $list = Siesta::List->new($list_id) || undef;
+
+	my $message = Siesta::Message->new();
+	$message->user($user);
+	$message->list($list);
+
+
+	my $type = 'default';
+
+	if (defined $user && defined $list) {
+
+		$type = 'per-user-per-list';
+
+	} elsif (defined $user) {
+
+		$type = 'per-user';
+
+	} elsif (defined $list) {
+		
+		$type = 'per-list';	
+	
+	}
+	
+
+	print "\n\nThe '$type' options for the plugin $plugin_id :\n";
+
+	foreach my $option (keys %{$plugin->options()})
+	{
+		my $value = $plugin->config($message, $option) || '[ no option set ]';
+
+		print " - $option = $value\n";
+	}
+	print "\n";
+}
+
+
 
 
 # todo 



Generated at 13:57 on 01 Jul 2004 by mariachi 0.52