aboutsummaryrefslogtreecommitdiff
path: root/sboconfig
diff options
context:
space:
mode:
Diffstat (limited to 'sboconfig')
-rwxr-xr-xsboconfig196
1 files changed, 0 insertions, 196 deletions
diff --git a/sboconfig b/sboconfig
deleted file mode 100755
index c7ea9b0..0000000
--- a/sboconfig
+++ /dev/null
@@ -1,196 +0,0 @@
-#!/usr/bin/perl
-#
-# vim: ts=4:noet
-#
-# sboconfig
-# script to handle sbotools configuration
-#
-# authors: Jacob Pipkin <j@dawnrazor.net>
-# Luke Williams <xocel@iquidus.org>
-# Andreas Guldstrand <andreas.guldstrand@gmail.com>
-# maintainer: Slack Coder <slackcoder@server.ky>
-
-use 5.16.0;
-use strict;
-use warnings FATAL => 'all';
-use SBO::Lib qw/ _ERR_USAGE slurp usage_error script_error open_fh %config $conf_dir $conf_file show_version /;
-use File::Basename;
-use Getopt::Long qw(:config no_ignore_case_always);
-use File::Copy;
-use File::Path qw(make_path);
-use File::Temp qw(tempfile);;
-
-my $self = basename($0);
-
-sub show_usage {
- print <<"EOF";
-Usage: $self [options] [arguments]
-
-Options:
- -h|--help:
- this screen.
- -v|--version:
- version information.
- -l|--list:
- show current options.
-
-Config options (defaults shown):
- -c|--clean FALSE:
- NOCLEAN: if TRUE, do NOT clean up after building by default.
- -d|--distclean FALSE:
- DISTCLEAN: if TRUE, DO clean distfiles by default after building.
- -j|--jobs FALSE:
- JOBS: numeric -j setting to feed to make for multicore systems.
- -g|--gpg-key D3076BC3E783EE747F09B8B70368EF579C7BA3B6:
- GPG_KEY GPG key ID for verification.
- -p|--pkg-dir FALSE:
- PKG_DIR: set a directory to store packages in.
- -s|--sbo-home /usr/sbo:
- SBO_HOME: set the SBo directory.
- -o|--local-overrides FALSE:
- LOCAL_OVERRIDES: a directory containing local overrides.
- -V|--slackware-version FALSE:
- SLACKWARE_VERSION: use the SBo repository for this version.
- -r|--repo FALSE:
- REPO: use a repository other than SBo.
-
-EOF
- return 1;
-}
-
-my %options;
-
-GetOptions(\%options, 'help|h', 'version|v', 'list|l', 'noclean|c=s',
- 'distclean|d=s', 'jobs|j=s', 'pkg-dir|p=s', 'sbo-home|s=s',
- 'local-overrides|o=s', 'slackware-version|V=s', 'repo|r=s', 'gpg-key|g=s');
-
-if ($options{help}) { show_usage(); exit 0 }
-if ($options{version}) { show_version(); exit 0 }
-
-my %valid_confs = (
- noclean => 'NOCLEAN',
- distclean => 'DISTCLEAN',
- jobs => 'JOBS',
- 'gpg-key' => 'GPG_KEY',
- 'pkg-dir' => 'PKG_DIR',
- 'sbo-home' => 'SBO_HOME',
- 'local-overrides' => 'LOCAL_OVERRIDES',
- 'slackware-version' => 'SLACKWARE_VERSION',
- 'repo' => 'REPO',
-);
-
-my %params = (
- NOCLEAN => 'c|--noclean',
- DISTCLEAN => 'd|--distclean',
- JOBS => 'j|--jobs',
- GPG_KEY => 'g|--gpg-key',
- PKG_DIR => 'p|--pkg-dir',
- SBO_HOME => 's|--sbo-home',
- LOCAL_OVERRIDES => 'o|--local-overrides',
- SLACKWARE_VERSION => 'V|--slackware-version',
- REPO => 'r|--repo',
-);
-
-if (exists $options{list}) {
- my @keys = sort {$a cmp $b} keys %config;
- say "sboconfig -$params{$_}:\n $_=$config{$_}" for @keys;
- exit 0;
-}
-
-if (not %options) {
- show_usage();
- exit 0;
-}
-
-# setup what's being changed, sanity check.
-my %changes;
-for my $key (keys %valid_confs) {
- my $value = $valid_confs{$key};
- $changes{$value} = $options{$key} if exists $options{$key};
-}
-
-my $warn = 'You have provided an invalid parameter for';
-
-if (exists $changes{NOCLEAN}) {
- usage_error("$warn -c") unless $changes{NOCLEAN} =~ /^(TRUE|FALSE)$/;
-}
-if (exists $changes{DISTCLEAN}) {
- usage_error("$warn -d") unless $changes{DISTCLEAN} =~ /^(TRUE|FALSE)$/;
-}
-if (exists $changes{JOBS}) {
- usage_error("$warn -j") unless $changes{JOBS} =~ /^(\d+|FALSE)$/;
-}
-if (exists $changes{GPG_KEY}) {
- usage_error("$warn -g") unless $changes{GPG_KEY} =~ /^([0-9A-F]+|FALSE)$/;
-}
-if (exists $changes{PKG_DIR}) {
- usage_error("$warn -p") unless $changes{PKG_DIR} =~ qr#^(/|FALSE$)#;
-}
-if (exists $changes{SBO_HOME}) {
- usage_error("$warn -s") unless $changes{SBO_HOME} =~ qr#^(/|FALSE$)#;
-}
-if (exists $changes{LOCAL_OVERRIDES}) {
- usage_error("$warn -o") unless $changes{LOCAL_OVERRIDES} =~ qr#^(/|FALSE$)#;
-}
-if (exists $changes{SLACKWARE_VERSION}) {
- usage_error("$warn -V") unless $changes{SLACKWARE_VERSION} =~ m/^(\d+\.\d+|FALSE)$/;
-}
-
-unless ($< == 0) {
- warn "This script requires root privileges.\n";
- exit _ERR_USAGE;
-}
-
-sub config_write {
- script_error('config_write requires at least two arguments.') unless @_ >= 2;
-
- if (! -d $conf_dir) {
- mkdir $conf_dir or usage_error("Unable to create $conf_dir. Exiting.");
- }
-
- my $conf = slurp($conf_file) || '';
- _fixup_conf($conf);
-
- while (@_ >= 2) {
- my $key = shift;
- my $val = shift;
- say "Setting $key to $val...";
-
- if ($conf =~ /^\Q$key\E=/m) {
- $conf =~ s/^\Q$key\E=.*$/$key=$val/m;
- } else {
- $conf .= "$key=$val\n";
- }
- }
-
- _fixup_conf($conf);
-
- my ($conffh, $exit) = open_fh($conf_file, '>');
- if ($exit) {
- warn $conffh;
- exit $exit;
- }
- print {$conffh} $conf;
-}
-
-# make sure there are no duplicate keys in the config
-sub _fixup_conf {
- my @lines = split /\n/, $_[0];
- my @fixed;
- my %keys;
- foreach my $line (@lines) {
- # if it's a comment or blank line, just pass it through
- if ($line =~ /^(#|\s*$)/) { push @fixed, $line; next; }
-
- my ($key, $val) = split /=/, $line;
- next if exists $keys{$key};
- $keys{$key}++;
- push @fixed, $line;
- }
-
- $_[0] = join "\n", @fixed, ''; # make sure we end with a newline if there are any lines
-}
-
-config_write(%changes) if %changes;
-
-exit 0;