1ce78654587068261f094441c0c5255d7108c2dd
[buildfarm-client.git] / EximBuild / Options.pm
1
2 package EximBuild::Options;
3
4 =comment
5
6 Copyright (c) 2003-2010, Andrew Dunstan
7 Copyright (c) 2013, Todd Lyons
8
9 See accompanying License file for license details
10
11 =cut 
12
13 # common options code for buildfarm scripts, so it stays in sync
14
15 use strict;
16 use warnings;
17 use Getopt::Long;
18
19 use vars qw(@option_list);
20
21 BEGIN
22 {
23     @option_list =qw(
24       $forcerun $buildconf $keepall $help
25       $quiet $from_source $from_source_clean $testmode
26       $skip_steps $only_steps
27       $nosend $nostatus $verbose
28     );
29 }
30
31 use Exporter   ();
32 our (@ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
33
34 use vars qw($VERSION); $VERSION = 'REL_0.1';
35
36 @ISA         = qw(Exporter);
37 @EXPORT      = @option_list;
38 %EXPORT_TAGS = ();
39 @EXPORT_OK   = ();
40
41 our (
42     $forcerun, $buildconf, $keepall,$help,
43     $quiet, $from_source,$from_source_clean, $testmode,
44     $skip_steps,$only_steps,
45     $nosend, $nostatus, $verbose,
46 );
47
48 my (%standard_options);
49
50 %standard_options =(
51     'nosend' => \$nosend,
52     'config=s' => \$buildconf,
53     'from-source=s' => \$from_source,
54     'from-source-clean=s' => \$from_source_clean,
55     'force' => \$forcerun,
56     'keepall' => \$keepall,
57     'verbose:i' => \$verbose,
58     'nostatus' => \$nostatus,
59     'test' => \$testmode,
60     'help' => \$help,
61     'quiet' => \$quiet,
62     'skip-steps=s' => \$skip_steps,
63     'only-steps=s' => \$only_steps,
64 );
65
66 $buildconf = "build-farm.conf"; # default value
67
68 # extra options can be used by a wrapper program, such as
69 # the one that will do the global lock and election, and it will
70 # still have acces to what it needs to do to invoke run_build.
71
72 sub fetch_options
73 {
74     GetOptions(%standard_options, @_)
75       || die "bad command line";
76
77 }
78
79 sub standard_option_list
80 {
81     my @result = ();
82     foreach my $k ( keys %standard_options )
83     {
84         my $vref = $standard_options{$k};
85         next unless defined($$vref);
86         (my $nicekey = $k) =~ s/[=:].*//;
87         push(@result, "--$nicekey");
88         push(@result,$$vref) if $$vref && $k =~ /[:=]/;
89     }
90     return @result;
91 }
92
93 1;