diff options
Diffstat (limited to 'modules/Options.pm')
-rw-r--r-- | modules/Options.pm | 306 |
1 files changed, 0 insertions, 306 deletions
diff --git a/modules/Options.pm b/modules/Options.pm deleted file mode 100644 index aacd1471..00000000 --- a/modules/Options.pm +++ /dev/null @@ -1,306 +0,0 @@ -package Options; - -# ************************************************************ -# Description : Process mpc command line options -# Author : Chad Elliott -# Create Date : 3/20/2003 -# ************************************************************ - -# ************************************************************ -# Pragmas -# ************************************************************ - -use strict; - -# ************************************************************ -# Subroutine Section -# ************************************************************ - -sub optionError { - #my($self) = shift; - #my($str) = shift; -} - - -sub completion_command { - my($self) = shift; - my($name) = shift; - my($types) = shift; - my($str) = "complete $name " . - "'c/-/(global include type template relative " . - "ti static noreldefs notoplevel feature_file" . - "value_template value_project)/' " . - "'c/dll:/f/' 'c/dll_exe:/f/' 'c/lib_exe:/f/' 'c/lib:/f/' " . - "'n/-ti/(dll lib dll_exe lib_exe)/:' 'n/-type/("; - - my(@keys) = sort keys %$types; - for(my $i = 0; $i <= $#keys; $i++) { - $str .= $keys[$i]; - if ($i != $#keys) { - $str .= " "; - } - } - $str .= ")/'"; - return $str; -} - - -sub options { - my($self) = shift; - my($name) = shift; - my($types) = shift; - my($defaults) = shift; - my(@args) = @_; - my(@include) = (); - my(@input) = (); - my(@generators) = (); - my(@baseprojs) = (); - my(%ti) = (); - my(%relative) = (); - my(%addtemp) = (); - my(%addproj) = (); - my($global) = undef; - my($template) = undef; - my($feature_f) = undef; - my($dynamic) = ($defaults ? 1 : undef); - my($reldefs) = ($defaults ? 1 : undef); - my($toplevel) = ($defaults ? 1 : undef); - my($static) = ($defaults ? 0 : undef); - my($recurse) = ($defaults ? 0 : undef); - - ## Process the command line arguments - for(my $i = 0; $i <= $#args; $i++) { - my($arg) = $args[$i]; - if ($arg eq '-complete') { - print $self->completion_command($name, $types) . "\n"; - return undef; - } - elsif ($arg eq '-base') { - $i++; - if (!defined $args[$i]) { - $self->optionError('-base requires an argument'); - } - else { - push(@baseprojs, $args[$i]); - } - } - elsif ($arg eq '-type') { - $i++; - if (!defined $args[$i]) { - $self->optionError('-type requires an argument'); - } - else { - my($type) = lc($args[$i]); - if (defined $types->{$type}) { - my($call) = $types->{$type}; - my($found) = 0; - foreach my $generator (@generators) { - if ($generator eq $call) { - $found = 1; - last; - } - } - if (!$found) { - push(@generators, $call); - } - } - else { - $self->optionError("Invalid type: $args[$i]"); - } - } - } - elsif ($arg eq '-feature_file') { - $i++; - $feature_f = $args[$i]; - if (!defined $feature_f) { - $self->optionError('-feature_file requires a file name argument'); - } - } - elsif ($arg eq '-global') { - $i++; - $global = $args[$i]; - if (!defined $global) { - $self->optionError('-global requires a file name argument'); - } - } - elsif ($arg eq '-include') { - $i++; - my($include) = $args[$i]; - if (!defined $include) { - $self->optionError('-include requires a directory argument'); - } - else { - push(@include, $include); - } - } - elsif ($arg eq '-noreldefs') { - $reldefs = 0; - } - elsif ($arg eq '-notoplevel') { - $toplevel = 0; - } - elsif ($arg eq '-recurse') { - $recurse = 1; - } - elsif ($arg eq '-template') { - $i++; - $template = $args[$i]; - if (!defined $template) { - $self->optionError('-template requires a file name argument'); - } - } - elsif ($arg eq '-relative') { - $i++; - my($rel) = $args[$i]; - if (!defined $rel) { - $self->optionError('-relative requires a variable assignment argument'); - } - else { - if ($rel =~ /(\w+)\s*=\s*(.*)/) { - my($name) = $1; - my($val) = $2; - $val =~ s/^\s+//; - $val =~ s/\s+$//; - $relative{$name} = $val; - } - else { - $self->optionError('Invalid option to -relative'); - } - } - } - elsif ($arg eq '-ti') { - $i++; - my($tmpi) = $args[$i]; - if (!defined $tmpi) { - $self->optionError('-ti requires a template input argument'); - } - else { - if ($tmpi =~ /(dll|lib|dll_exe|lib_exe):(.*)/) { - my($key) = $1; - my($name) = $2; - $ti{$key} = $name; - } - else { - $self->optionError("Invalid -ti argument: $tmpi"); - } - } - } - elsif ($arg eq '-value_template') { - $i++; - my($value) = $args[$i]; - if (!defined $value) { - $self->optionError('-value_template requires a variable assignment argument'); - } - else { - if ($value =~ /(\w+)\s*([\-+]?=)\s*(.*)/) { - my($name) = $1; - my($op) = $2; - my($val) = $3; - $val =~ s/^\s+//; - $val =~ s/\s+$//; - if ($op eq '+=') { - $op = 1; - } - elsif ($op eq '-=') { - $op = -1; - } - else { - $op = 0; - } - $addtemp{$name} = [$op, $val]; - } - else { - $self->optionError('Invalid option to -value_template'); - } - } - } - elsif ($arg eq '-value_project') { - $i++; - my($value) = $args[$i]; - if (!defined $value) { - $self->optionError('-value_project requires a variable assignment argument'); - } - else { - if ($value =~ /(\w+)\s*([\-+]?=)\s*(.*)/) { - my($name) = $1; - my($op) = $2; - my($val) = $3; - $val =~ s/^\s+//; - $val =~ s/\s+$//; - if ($op eq '+=') { - $op = 1; - } - elsif ($op eq '-=') { - $op = -1; - } - else { - $op = 0; - } - $addproj{$name} = [$op, $val]; - } - else { - $self->optionError('Invalid option to -value_project'); - } - } - } - elsif ($arg eq '-static') { - $static = 1; - } - elsif ($arg eq '-static_only') { - $static = 1; - $dynamic = 0; - } - elsif ($arg =~ /^-/) { - $self->optionError("Unknown option: $arg"); - } - else { - push(@input, $arg); - } - } - - my(%options) = ('global' => $global, - 'feature_file' => $feature_f, - 'include' => \@include, - 'input' => \@input, - 'generators' => \@generators, - 'baseprojs' => \@baseprojs, - 'template' => $template, - 'ti' => \%ti, - 'dynamic' => $dynamic, - 'static' => $static, - 'relative' => \%relative, - 'reldefs' => $reldefs, - 'toplevel' => $toplevel, - 'recurse' => $recurse, - 'addtemp' => \%addtemp, - 'addproj' => \%addproj, - ); - - return \%options; -} - - -sub is_set { - my($self) = shift; - my($key) = shift; - my($options) = shift; - - if (UNIVERSAL::isa($options->{$key}, 'ARRAY')) { - if (defined $options->{$key}->[0]) { - return 'ARRAY'; - } - } - elsif (UNIVERSAL::isa($options->{$key}, 'HASH')) { - my(@keys) = keys %{$options->{$key}}; - if (defined $keys[0]) { - return 'HASH'; - } - } - elsif (defined $options->{$key}) { - return 'SCALAR'; - } - - return undef; -} - -1; |