diff options
| author | Manuel Traut <manut@mecka.net> | 2011-04-29 09:09:27 +0200 |
|---|---|---|
| committer | Manuel Traut <manut@mecka.net> | 2011-04-29 09:09:27 +0200 |
| commit | 5238ad5a0c4a9e1c8cd036f5de4055e39bd71297 (patch) | |
| tree | 4407c087b9fb5432b1dc11e70b52dacfa0b99feb /beagle/debian-rfs/usr/bin/debconf-copydb | |
| parent | 60ead65c41afba7e6aa4bbcf507a1d52f7a8fe9f (diff) | |
added debootstrap stuff
Signed-off-by: Manuel Traut <manut@mecka.net>
Diffstat (limited to 'beagle/debian-rfs/usr/bin/debconf-copydb')
| -rwxr-xr-x | beagle/debian-rfs/usr/bin/debconf-copydb | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/beagle/debian-rfs/usr/bin/debconf-copydb b/beagle/debian-rfs/usr/bin/debconf-copydb new file mode 100755 index 0000000..82d9e2f --- /dev/null +++ b/beagle/debian-rfs/usr/bin/debconf-copydb @@ -0,0 +1,82 @@ +#!/usr/bin/perl -w +# This file was preprocessed, do not edit! + + +use strict; +use Getopt::Long; +use Debconf::Log qw{:all}; +use Debconf::Db; +use Debconf::DbDriver; +use Debconf::DbDriver::Backup; + + +sub usage { + print STDERR <<EOF; +Usage: debconf-copydb sourcedb destdb [--pattern=pattern] [--owner-pattern=pattern] [--config=Foo:bar] +EOF + exit(1); +} + + +my $pattern='.*'; +my $owner_pattern; + +my %config; +sub config { + my ($field, $value)=split(/\s*:\s*/, $_[1], 2); + $field=~tr/-/_/; + $field=lc($field); + die "Parse error: \"$_[1]\"" unless defined $field and length $field; + + if ($field eq 'name') { + if ($config{name}) { + Debconf::Db->makedriver(%config); + } + elsif (%config) { + warn "ignoring command line config data before $_[1]"; + } + %config=(); + } + + $config{$field}=$value; +} + +GetOptions( + "pattern|p=s" => \$pattern, + "config|c=s" => \&config, + "owner-pattern=s" => \$owner_pattern, +) || usage(); +Debconf::Db->makedriver(%config) if %config; + +my $srcname=shift || usage(); +my $destname=shift || usage(); + +Debconf::Db->load; + +my $src=Debconf::DbDriver->driver($srcname); +die "$0: source database, \"$srcname\" does not exist\n" unless ref $src; +my $dest=Debconf::DbDriver->driver($destname); +die "$0: destination database, \"$destname\" does not exist\n" unless ref $dest; + +my $copier=Debconf::DbDriver::Backup->new( + db => $src, backupdb => $dest, name => 'copier'); + +my $i=$copier->iterator; +while (my $item=$i->iterate) { + next unless $item =~ /$pattern/; + + if (defined $owner_pattern) { + my $fit_owner = 0; + my $owner; + foreach $owner ($src->owners($item)){ + $fit_owner = 1 if $owner =~ /$owner_pattern/; + } + next unless $fit_owner; + } + + $copier->copy($item, $src, $dest); +} + +$copier->shutdown; + + |
