#!/usr/bin/perl
# This file was preprocessed, do not edit!
sub usage {
	print STDERR <<EOF;
Usage: 
    debconf-show packagename [--db=dbname]
    debconf-show --listowners [--db=dbname]
    debconf-show --listdbs
EOF
	exit(1)
}
use strict;
use warnings;
use Debconf::Db;
use Debconf::Template;
use Debconf::Question;
use Getopt::Long;
my $db='';
my $listowners=0;
my $package='';
my $listdbs=0;
GetOptions(
	"db=s" => \$db,
	"listowners" => \$listowners,
	"listdbs" => \$listdbs,
) || usage();
unless ($listowners or $listdbs) {
	$package = shift || usage();
}
Debconf::Db->load(readonly => 'true');
my %drivers = %Debconf::DbDriver::drivers;
my $conf = Debconf::Config->config;
sub tree {
	my $node=shift;
	my $string=shift || "";
	my $driver = Debconf::DbDriver->driver($node);
	my $name = $driver->{name};
	$string = $string.$name;
	print $string."\n";
	if ($driver->isa("Debconf::DbDriver::Stack")) {
		$string=$string.'/';
		map { tree($_->{name},$string) } @{$driver->{stack}};
	}
}
if ($db) {
	my $driver = $drivers{$db};
	die $db.": unknown database" unless defined($driver);
	$Debconf::Db::config = $driver;
}
my $qi=Debconf::Question->iterator;
if ($listdbs) {
	tree($conf);
}
elsif ($package) {
	while (my $q=$qi->iterate) {
		if (grep { $package eq $_} split(/, /, $q->owners)) {
			if ($q->flag("seen") eq 'true') {
				print "* ";
			}
			else {
				print "  ";
			}
			print $q->name.": ";
			if ($q->type eq 'password') {
				print "(password omitted)";
			}
			else {
				print $q->value;
			}
			print "\n";
		}
	}
}
elsif ($listowners) {
	my %seen;
	while (my $q=$qi->iterate) {
		foreach (split(/, /, $q->owners)) {
			unless ($seen{$_}) {
				print "$_\n";
				$seen{$_}=1;
			}
		}
	}
}
