aboutsummaryrefslogtreecommitdiff
path: root/sboconfig
diff options
context:
space:
mode:
Diffstat (limited to 'sboconfig')
-rwxr-xr-xsboconfig52
1 files changed, 25 insertions, 27 deletions
diff --git a/sboconfig b/sboconfig
index 829d7a3..fb32110 100755
--- a/sboconfig
+++ b/sboconfig
@@ -21,7 +21,7 @@ use File::Temp qw(tempfile);;
my %config = %SBO::Lib::config;
my $self = basename ($0);
-sub show_usage {
+sub show_usage () {
print <<EOF
Usage: $self [options] [arguments]
@@ -48,16 +48,8 @@ EOF
my %options;
getopts ('hvlc:d:p:s:j:', \%options);
-show_usage () and exit (0) if exists $options{h};
-show_version () and exit (0) if exists $options{v};
-
-if (exists $options{l}) {
- my @keys = sort {$a cmp $b} keys %config;
- print "$_=$config{$_}\n" for @keys;
- exit 0;
-}
-
-show_usage () and exit (0) unless %options;
+show_usage and exit 0 if exists $options{h};
+show_version and exit 0 if exists $options{v};
my %valid_confs = (
c => 'NOCLEAN',
@@ -66,6 +58,16 @@ my %valid_confs = (
p => 'PKG_DIR',
s => 'SBO_HOME',
);
+
+my %params = reverse %valid_confs;
+
+if (exists $options{l}) {
+ my @keys = sort {$a cmp $b} keys %config;
+ print "$_=$config{$_}\n" for @keys;
+ exit 0;
+}
+
+show_usage and exit 0 unless %options;
# setup what's being changed.
my %changes;
@@ -82,36 +84,32 @@ my $conf_file = $SBO::Lib::conf_file;
# safely modify our conf file; copy to a temp location, edit the temp file,
# move the edited file into place
-sub config_write {
+sub config_write ($$) {
exists $_[1] or script_error ('config_write requires two arguments.');
my ($key, $val) = @_;
if (! -d $conf_dir) {
mkdir ($conf_dir) or die "Unable to create $conf_dir. Exiting.\n";
}
if (-f $conf_file) {
- my ($fh, $filename) = tempfile (DIR => $SBO::Lib::tempdir);
- close $fh;
- copy ($conf_file, $filename);
+ my $tempfh = tempfile (DIR => $SBO::Lib::tempdir);
+ my $tempfn = get_tmp_perlfn $tempfh;
+ copy ($conf_file, $tempfn);
# tie the file so that if $key is already there, we just change that
# line and untie it
- tie my @temp, 'Tie::File', $filename;
- my $has = 'FALSE';
+ tie my @temp, 'Tie::File', $tempfn;
+ my $has = 0;
my $regex = qr/\A\Q$key\E=/;
FIRST: for my $tmpline (@temp) {
- if ($tmpline =~ $regex) {
- $has = 'TRUE';
- $tmpline = "$key=$val";
- last FIRST;
- }
+ $has++, $tmpline = "$key=$val", last FIRST if $templine =~ $regex;
}
untie @temp;
# otherwise, append our new $key=$value pair
- if ($has eq 'FALSE') {
- my $fh = open_fh ($filename, '>>');
+ unless ($has) {
+ my $fh = open_fh ($tempfn, '>>');
print {$fh} "$key=$val\n";
close $fh;
}
- move ($filename, $conf_file);
+ move ($tempfn, $conf_file);
} else {
# no config file, easiest case of all.
my $fh = open_fh ($conf_file, '>');
@@ -121,8 +119,8 @@ sub config_write {
}
while (my ($key, $value) = each %changes) {
- print "Setting $key to $value...\n";
- config_write ($key, $value);
+ say "Setting $key to $value...";
+ config_write $key, $value;
}
exit 0;