summaryrefslogtreecommitdiffstats
path: root/tools/sbuild-dumpconfig
diff options
context:
space:
mode:
Diffstat (limited to 'tools/sbuild-dumpconfig')
-rwxr-xr-xtools/sbuild-dumpconfig191
1 files changed, 191 insertions, 0 deletions
diff --git a/tools/sbuild-dumpconfig b/tools/sbuild-dumpconfig
new file mode 100755
index 0000000..05dea19
--- /dev/null
+++ b/tools/sbuild-dumpconfig
@@ -0,0 +1,191 @@
+#!/usr/bin/perl
+#
+# sbuild: build packages, obeying source dependencies
+# Copyright © 1998-2000 Roman Hodek <Roman.Hodek@informatik.uni-erlangen.de>
+# Copyright © 2005 Ryan Murray <rmurray@debian.org>
+# Copyright © 2005-2009 Roger Leigh <rleigh@debian.org
+# Copyright © 2008 Timothy G Abbott <tabbott@mit.edu>
+# Copyright © 2008 Simon McVittie <smcv@debian.org>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see
+# <http://www.gnu.org/licenses/>.
+#
+#######################################################################
+
+use strict;
+use warnings;
+
+use Sbuild::Conf qw();
+use Buildd::Conf qw();
+use Sbuild::Sysconfig;
+use Text::Wrap;
+use Data::Dumper;
+
+die "Usage: $0 sbuild|buildd config|man" if @ARGV != 2;
+
+my $program = $ARGV[0];
+my $output = $ARGV[1];
+
+$Sbuild::Sysconfig::paths{'SBUILD_CONF'} = '/invalid';
+$Sbuild::Sysconfig::paths{'BUILDD_CONF'} = '/invalid';
+
+$Data::Dumper::Sortkeys = 1;
+
+my $conf;
+if ($program eq "sbuild") {
+ $conf = Sbuild::Conf::new(CHECK=>0);
+} elsif ($program eq "buildd") {
+ $conf = Buildd::Conf::new(CHECK=>0);
+} else {
+ die "Unsupported configuration type $program";
+}
+exit 1 if !defined($conf);
+
+
+die "Unsupported output type $output"
+ if ($output ne "config" && $output ne "man");
+
+
+
+my @keys = sort $conf->get_keys();
+
+# print "KEYS: " . join(", ", @keys) . "\n";
+
+my %tmpgroups;
+
+foreach my $key (@keys) {
+# print "KEY: $key, GROUP: " . $conf->_get_group($key) . "\n";
+ $tmpgroups{$conf->_get_group($key)} = 1;
+}
+
+my @groups = sort keys %tmpgroups;
+
+# print "GROUPS: " . join(",\n", @groups) . "\n";
+
+
+my $header = "# ${program}.conf: ${program} settings. -*- Perl -*-\n";
+
+$header .= <<END;
+# Default settings are commented out.
+# Note that all possible settings are listed here. Many may be set on
+# the command-line, and do not normally need setting here,
+# e.g. \$verbose. Others need setting by each individual user in their
+# ~/.${program}rc, but are listed here for completeness.
+END
+
+if ($output eq "config") {
+ print "$header";
+}
+foreach my $group (@groups) {
+ # Don't print internal keys
+ next if $group =~ m/^__/;
+
+ if ($output eq "config") {
+ print "\n\n##\n## $group\n##\n\n";
+ } elsif ($output eq "man") {
+ print ".SS $group\n";
+ }
+
+ foreach my $key (@keys) {
+ if ($conf->_get_group($key) eq $group) {
+ my $type = $conf->_get_type($key);
+ my $varname = $conf->_get_varname($key);
+ my $help = $conf->_get_help($key);
+ my $default = $conf->_get_default($key);
+ my $ignore_default = $conf->_get_ignore_default($key);
+ my $cli_options = $conf->_get_cli_options($key);
+ my $example = $conf->_get_example($key);
+ if ($output eq "config") {
+ print "# $key\n";
+ print "# Type: $type\n";
+ if ($help) {
+ print wrap("# ", "# ", "$help\n");
+ }
+ if ($cli_options) {
+ print "# See also related command line options in sbuild(1):\n";
+ foreach my $opt (@{$cli_options}) {
+ print "# $opt\n";
+ }
+ }
+ if ($example) {
+ foreach my $line (split("\n", $example)) {
+ print "# $line\n";
+ }
+ }
+ if ($ignore_default) {
+ print wrap("#", "#", "$varname = ...;");
+ print("\n");
+ } else {
+ print wrap("#", "#", Data::Dumper->Dump([$default],
+ ["$varname"]));
+ }
+ print("\n");
+ } elsif ($output eq "man") {
+ print ".TP\n";
+ print ".BR $key\n";
+ print "$type type.\n";
+ if ($help) {
+ print "$help\n";
+# print wrap("", "", "$help\n");
+ }
+ if ($cli_options) {
+ print ".IP\n";
+ print "Related\n";
+ print ".BR sbuild (1)\n";
+ print "command line options:\n";
+ print ".PP\n";
+ print ".RS\n";
+ foreach my $opt (@{$cli_options}) {
+ print "\\f[CR]$opt\\fP\n";
+ print ".br\n";
+ }
+ print ".RE\n";
+ }
+ if ($example) {
+ print ".IP\n";
+ print "Example:\n";
+ print ".PP\n";
+ print ".RS\n";
+ foreach my $line (split("\n", $example)) {
+ print "\\f[CR]$line\\fP\n";
+ print ".br\n"
+ }
+ print ".RE\n";
+ }
+ if ($ignore_default) {
+ print ".PP\n";
+ print ".RS\n";
+ print "\\f[CR]$varname = ...;\\fP\n";
+ print ".br\n";
+ print ".RE\n";
+ } else {
+ print ".IP\n";
+ print "Default:\n";
+ print ".PP\n";
+ print ".RS\n";
+ foreach my $line (split("\n",
+ Data::Dumper->Dump([$default],
+ ["$varname"]))) {
+ print "\\f[CR]$line\\fP\n";
+ print ".br\n"
+ }
+ print ".RE\n";
+ }
+ }
+ }
+ }
+}
+if ($output eq "config") {
+ print "1;\n";
+}