1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Installer.
#
# The Initial Developer of the Original Code is Zach Lipton
# Portions created by Zach Lipton are
# Copyright (C) 2002 Zach Lipton. All
# Rights Reserved.
#
# Contributor(s): Zach Lipton <zach@zachlipton.com>
#
# Alternatively, the contents of this file may be used under the
# terms of the GNU General Public License Version 2 or later (the
# "GPL"), in which case the provisions of the GPL are applicable
# instead of those above. If you wish to allow use of your
# version of this file only under the terms of the GPL and not to
# allow others to use your version of this file under the MPL,
# indicate your decision by deleting the provisions above and
# replace them with the notice and other provisions required by
# the GPL. If you do not delete the provisions above, a recipient
# may use your version of this file under either the MPL or the
# GPL.
#
package Conf;
no warnings; # evil beings...
use Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(ask holduntilkey output setConf getConf getParam setParam);
# this is very important. We set a default controller which is responsible
# for getting data from the user and returning it back to us. Our default
# is rather simple, but if a packager wishes to use a Tk front-end or customize
# the look and feel of the installation process to match with their system, they
# can override our controller by making a new one and setting
# $Conf::controller = "foo" in a custom Configure.pl
# This is really intended for debian-style configuration systems
$controller = "Conf::DefaultController";
unless (eval("use $controller")) {
die "ack, something went wrong when I tried to use controller $controller $@";
}
eval("use Conf::Supplies::Config"); # do this in an eval because it may not exist yet
# this module will store defaults for the installation
# ASK:
# call me like this:
# ask('questionname','question?','default answer');
sub ask {
my ($name, $question, $default) = @_;
if ($Conf::Supplies::Config::answers{$name}) { # if it's in Config.pm, use it
$default = $Conf::Supplies::Config::answers{$name};
}
_ask($name,$question,$default);
if ($answer eq "") { $answer = $default; } # handle the default
$main::c{$name} = $answer;
}
#HOLDUNTILKEY
# allows you to pause until the user presses a key
sub holduntilkey {
_holduntilkey();
}
sub output {
my ($output, $loud) = @_;
_output($output,$loud);
}
sub setConf($$) {
my ($name, $value) = @_;
$main::c{$name} = $value; # and set it
}
sub getConf($) {
my $name = @_;
return $main::c{$name}; # return the value
}
# ask for the param name
sub getParam($) {
my $param = @_;
return $params{$param}; # return the param
}
# set a param
sub setParam($$) {
my ($name, $value) = @_;
$params{$name} = $value; # and set it
}
1;
|