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