Changeset 2963

Show
Ignore:
Timestamp:
08/21/08 19:34:22 (3 months ago)
Author:
mpaschal
Message:

Test option parsing in MT::Tool
Correctly manage option value containers (no such thing as a ref to a hash slice)
BugzID: 80878

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/feature-worker/lib/MT/Tool.pm

    r2962 r2963  
    6060    my @options = $class->options(); 
    6161 
    62     my $addl_settings = ref $options[0] ? $options[0] : {}; 
     62    my $addl_settings = @options && ref $options[0] ? $options[0] : {}; 
     63    my ($opts_good, $help, $usage, $verbose); 
    6364    my %addl_options = ( 
    64         'help!'      => \$addl_settings{help}
    65         'usage!'     => \$addl_settings{usage}
    66         'verbose|v+' => \$addl_settings{verbose}
     65        'help!'      => \$help
     66        'usage!'     => \$usage
     67        'verbose|v+' => \$verbose
    6768    ); 
    6869 
    69     my $opts_good = GetOptions(@options, 
    70         ref $options[0] ? keys %addl_options : %addl_options); 
    71  
    72     if (!$opts_good || $addl_settings->{usage}) { 
     70    if (@options && ref $options[0]) { 
     71        $opts_good = GetOptions(@options, keys %addl_options); 
     72        ($help, $usage, $verbose) = @$addl_settings{qw( help usage verbose )}; 
     73    } 
     74    else { 
     75        $opts_good = GetOptions(@options, %addl_options); 
     76    } 
     77 
     78    if (!$opts_good || $usage) { 
    7379        $class->show_usage(); 
    7480        exit; 
    7581    } 
    76     if ($addl_settings->{help}) { 
     82    if ($help) { 
    7783        $class->show_help(); 
    7884        exit; 
    7985    } 
    8086 
    81     return $addl_settings->{verbose}
     87    return $verbose
    8288} 
    8389