#!/usr/bin/perl # # sbuild: build packages, obeying source dependencies # Copyright © 1998-2000 Roman Hodek # Copyright © 2005 Ryan Murray # Copyright © 2005-2009 Roger Leigh # Copyright © 2008 Simon McVittie # # 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 # . # ####################################################################### 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 .= <_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"; }