xref: /openbsd-src/regress/usr.sbin/pkg_add/populate (revision fac887d56b385fe2211e974d438289c152e05a6e)
1#! /usr/bin/perl
2
3# small script to fill files for creating packages...
4use strict;
5use warnings;
6
7use OpenBSD::AddCreateDelete;
8use OpenBSD::PackingList;
9
10package myState;
11our @ISA = qw(OpenBSD::AddCreateDelete::State);
12sub handle_options
13{
14	my $state = shift;
15	$state->SUPER::handle_options('f:B:P:');
16}
17
18package OpenBSD::PackingElement;
19use File::Basename;
20sub populate
21{
22}
23
24sub hierarchy
25{
26	my ($self, $o) = @_;
27	if (!-e $o) {
28		$self->hierarchy(dirname($o));
29		mkdir($o);
30	}
31}
32
33
34package OpenBSD::PackingElement::FileBase;
35use File::Basename;
36
37sub populate
38{
39	my ($self, $dir) = @_;
40	my $f = join('/', $dir, $self->fullname);
41	$self->hierarchy(dirname($f));
42	if (!-e $f) {
43		open(my $file, '>', $f) or die;
44		print $file $self->fullname, "\n";
45		close $file;
46	}
47}
48
49package OpenBSD::PackingElement::DirBase;
50sub populate
51{
52	my ($self, $dir) = @_;
53	$self->hierarchy(join('/', $dir, $self->fullname));
54}
55
56package main;
57
58my $state = myState->new;
59$state->handle_options;
60my $filename = $state->opt('f');
61my $plist = OpenBSD::PackingList->fromfile($filename,
62    sub {
63	my ($fh, $cont) = @_;
64	while (<$fh>) {
65		&$cont($state->{subst}->do($_));
66	}
67    });
68
69if (!defined $plist) {
70	$state->fatal("Error reading packing-list #1", $filename);
71}
72
73my $localbase = $state->opt('L') // OpenBSD::Paths->localbase;
74$plist->populate($state->opt('B').$localbase);
75