package PBS::Prf ; use PBS::Debug ; use 5.006 ; use strict ; use warnings ; use Data::TreeDumper ; require Exporter ; use AutoLoader qw(AUTOLOAD) ; our @ISA = qw(Exporter) ; our %EXPORT_TAGS = ('all' => [ qw() ]) ; our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } ) ; our @EXPORT = qw(AddTargets AddCommandLineDefinitions AddCommandLineSwitches) ; our $VERSION = '0.01' ; #------------------------------------------------------------------------------- use PBS::Config ; use PBS::PBSConfig ; use PBS::Output ; #------------------------------------------------------------------------------- sub AddTargets { my $pbs_config = GetPbsConfig(caller) ; push @{$pbs_config->{TARGETS}}, @_ ; } #------------------------------------------------------------------------------- sub AddCommandLineSwitches { my $caller = caller() ; my @switches = @_ ; local @ARGV = map { my $key_value = $_ ; $key_value =~ s/^\s*// ; $key_value =~ s/\s*$// ; if ($key_value =~ /([^ ]+)\ (.*)/) { ("$1", $2) ; } else { "$key_value" ; } } @switches ; my $pbs_config = GetPbsConfig($caller) ; my @flags = PBS::PBSConfigSwitches::Get_GetoptLong_Data($pbs_config) ; my $ignore_error = $pbs_config->{'PRF_IGNORE_ERROR'} ; local $SIG{__WARN__} = sub { PrintWarning $_[0] unless $ignore_error ; } ; use Getopt::Long ; Getopt::Long::Configure('no_auto_abbrev', 'no_ignore_case', 'require_order') ; unless(GetOptions(@flags)) { die ERROR "Error parsing switches" unless $ignore_error ; } } #------------------------------------------------------------------------ 1 ; #------------------------------------------------------------------------------- __END__ =head1 NAME PBS::Prf - Support functions for pure perl prf files =head1 DESCRIPTION Prf file contain the definition of command line switches and target. PBS 0.36 introduces pure perl prfs. All perl functionality is accessible in the prfs but only a limited subset of PBS functionality is available. AddTargets('1', '2') ; #~ AddCommandLineSwitches('-unknown_switch') ; # will generate an error and stop AddCommandLineSwitches('-sd /') ; AddCommandLineSwitches('-ndpb') ; AddCommandLineSwitches ( '-dc' , '-dsd' , '-ppp /devel/perl_modules/PerlBuildSystem/Plugins' ) ; AddCommandLineDefinitions(DEBUG => 1) ; AddCommandLineDefinitions(SOMETHING => 'a string with spaces') ; AddCommandLineDefinitions ( DEBUG2 => 1 , SOMETHING2 => 'a string with spaces again' ) ; =head1 AUTHOR Khemir Nadim ibn Hamouda. nadim@khemir.net =cut