[prev] [thread] [next] [lurker] [Date index for 2002/09/09]
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