Changeset 168

Show
Ignore:
Timestamp:
06/22/04 20:30:49 (4 years ago)
Author:
athomas
Message:

Added begin() and end() callbacks for modules.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • manage/trunk/CLI/Plugin.pm

    r162 r168  
    1818} 
    1919 
    20 sub initialize() { 
     20# Do post-construction initialisation. This can include authentication, 
     21# whatever. Returns 1 for success, 0 for not. 
     22sub begin() { 
     23my $self = shift; 
     24 
     25        1; 
     26
     27 
     28sub end() { 
     29my $self = shift; 
     30 
     31        1; 
    2132} 
    2233 
  • manage/trunk/CLI.pm

    r167 r168  
    7070                        } 
    7171                } 
    72                 #$self->merge($args{plugins}); 
    7372        } 
    7473        return $self; 
     
    313312} 
    314313 
     314sub begin() { 
     315my $self = shift; 
     316 
     317        for my $plugin (values(%{$self->{plugins}})) { 
     318                return 0 unless $plugin->begin(); 
     319        } 
     320        1; 
     321} 
     322 
     323sub end() { 
     324my $self = shift; 
     325 
     326        for my $plugin (values(%{$self->{plugins}})) { 
     327                $plugin->end(); 
     328        } 
     329        1; 
     330} 
     331 
    3153321; 
  • manage/trunk/manage

    r165 r168  
    11#!/usr/bin/perl 
    2  
    3 # Add cli-parser to our module include path 
    4 BEGIN { push(@INC, "./CLI"); } 
    52 
    63use warnings; 
     
    238235        ); 
    239236 
     237# Merge config 
     238for my $plugin (values(%{$CLI->{plugins}})) { 
     239        %CONF = (%CONF, %{$plugin->{conf}}) if $plugin->{conf}; 
     240} 
     241 
     242# Initialize modules 
     243exit(1) unless $CLI->begin(); 
    240244 
    241245# Initialise terminal and readline 
     
    278282 
    279283END { 
     284        $CLI->end(); 
    280285        Term::ReadLine::Gnu->WriteHistory("$ENV{HOME}/.{$SELF}history"); 
    281286        if (!$FATAL) { 
  • manage/trunk/plugins/dns.pm_

    r165 r168  
    11package CLI::Plugin::DNS; 
     2 
    23use strict; 
    34use warnings; 
     
    2223); 
    2324 
    24 # Export some configuration variables 
    25 %::CONF = ( 
    26         %::CONF, 
    27         'dns-detail' => { 
    28                 value => \$DETAIL, 
    29                 pattern => 'on|off', 
    30                 help => 'Whether to display extra zone detail.', 
    31         }, 
    32         'dns-key-name' => { 
    33                 value => \$KEY, 
    34                 help => 'The TSIG key name.', 
    35         }, 
    36         'dns-key-secret' => { 
    37                 value => \$SECRET, 
    38                 help => 'The TSIG key secret.', 
    39         }, 
    40         'dns-timeout' => { 
    41                 value => \$TIMEOUT, 
    42                 pattern => 'none|\d+', 
    43                 help => 'Network timeout.', 
    44         }, 
    45         'dns-server' => { 
    46                 value => \$NS, 
    47                 help => 'IP address of name server.', 
    48                 pattern => '\d+\.\d+\.\d+\.\d+', 
    49         }, 
    50         'dns-ttl' => { 
    51                 value => \$TTL, 
    52                 help => 'Default TTL for new entries.', 
    53                 pattern => '\d+', 
    54         }, 
    55         'dns-zone' => { 
    56                 value => \$ZONE, 
    57                 help => 'Default zone.', 
    58                 pattern => '[.\dA-Za-z0-9-]+', 
    59         }, 
    60 ); 
    61  
    6225sub new(%) { 
    6326my ($self, $class) = ({}, shift); 
     
    6730} 
    6831 
    69 sub initialize() { 
     32# Called after all plugins are constructed and configs are merged. 
     33sub begin() { 
    7034my $self = shift; 
     35 
     36        1; 
    7137} 
    7238 
     39# Construct and return plugin object 
    7340new CLI::Plugin::DNS( 
    7441        grammar => { 
     
    8754        }, 
    8855        conf => { 
     56                'dns-detail' => { 
     57                        value => \$DETAIL, 
     58                        pattern => 'on|off', 
     59                        help => 'Whether to display extra zone detail.', 
     60                }, 
     61                'dns-key-name' => { 
     62                        value => \$KEY, 
     63                        help => 'The TSIG key name.', 
     64                }, 
     65                'dns-key-secret' => { 
     66                        value => \$SECRET, 
     67                        help => 'The TSIG key secret.', 
     68                }, 
     69                'dns-timeout' => { 
     70                        value => \$TIMEOUT, 
     71                        pattern => 'none|\d+', 
     72                        help => 'Network timeout.', 
     73                }, 
     74                'dns-server' => { 
     75                        value => \$NS, 
     76                        help => 'IP address of name server.', 
     77                        pattern => '\d+\.\d+\.\d+\.\d+', 
     78                }, 
     79                'dns-ttl' => { 
     80                        value => \$TTL, 
     81                        help => 'Default TTL for new entries.', 
     82                        pattern => '\d+', 
     83                }, 
     84                'dns-zone' => { 
     85                        value => \$ZONE, 
     86                        help => 'Default zone.', 
     87                        pattern => '[.\dA-Za-z0-9-]+', 
     88                }, 
    8989        }, 
    9090); 
  • manage/trunk/plugins/nodelist2.pm

    r166 r168  
    11{ 
    2         add => { 
    3                 '1)host' => { 
    4                         '$[a-zA-Z0-9.-]+' => { 
    5                                 '$*[0-9.]+' => { 
    6                                         ACTION => sub { 
    7                                                 print "@_\n" 
    8                                         }, 
    9                                         HELP => [ "<ip>", "IP address to bind to hostname." ], 
    10                                 }, 
    11                                 HELP => [ "<hostname>", "Hostname to add." ], 
    12                         }, 
    13                 }, 
    14         }, 
    152}; 
  • manage/trunk/README

    r160 r168  
    1 See https://havs.swapoff.org/ManageCLI for full documentation. 
     1See https://svn.swapoff.org/manage for full documentation.