blob: b7c860f484bd43ceb1f8c44bbaea7198ce293dc9 (
plain)
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
|
#!/usr/bin/perl -w
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
use strict;
use 5.10.1;
use FindBin qw($RealBin);
use lib ("$RealBin/..", "$RealBin/../lib", "$RealBin/../local/lib/perl5");
use Bugzilla;
use Bugzilla::Constants;
use Bugzilla::User;
Bugzilla->usage_mode(USAGE_MODE_CMDLINE);
my ($login, $action, $param, $value) = @ARGV;
($login && $action && $action =~ /^(get|set)$/)
or die "syntax: $0 <bugzilla-login> <get|set> [param] [value]\n";
my $user = Bugzilla::User->check({ name => $login });
my $settings = $user->settings;
if ($action eq 'get') {
if ($param eq '') {
foreach my $name (sort keys %$settings) {
printf "%s=%s\n", $name, $settings->{$name}->{value};
}
} elsif (exists $settings->{$param}) {
say $settings->{$param}->{value};
} else {
die "Invalid parameter name: $param\n";
}
} else {
if ($param eq '') {
die "Parameter name required\n";
} elsif (!exists $settings->{$param}) {
die "Invalid parameter name: $param\n";
} elsif (!defined($value) || $value eq '') {
die "Missing parameter value\n";
} else {
my $setting = $settings->{$param};
# not using validate_value here so we can print out a list of the legal values
my $legal_values = $setting->legal_values;
if (! grep { $value eq $_ } @$legal_values) {
die "Invalid value '$value' for param $param.\nAccepted values: " . join(' ', @$legal_values) . "\n";
}
$setting->set($value);
say "'$param' set to '$value'";
}
}
|