1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
#!/usr/bin/perl
use strict;
use warnings;
die "must specify arch" if not defined $ARGV[0];
my $arch = $ARGV[0];
my %template;
$template{Fields} = [];
$template{'Description-Long'} = "";
sub print_template {
foreach ( @{$template{Fields}} ) {
print $_ . ": ";
if ( ref $template{$_} eq "HASH" ) {
if ( defined $template{$_}->{$arch} ) {
print $template{$_}->{$arch};
} else {
print $template{$_}->{default};
}
} else {
print $template{$_};
}
print "\n";
}
print $template{'Description-Long'} . "\n";
%template = ();
$template{Fields} = [];
$template{'Description-Long'} = "";
}
while ( <STDIN> ) {
chomp;
if (m/^$/) {
print_template;
} elsif ( m/^(\w+)(\[(\w+)\])?:\s+(.*)\s*$/ ) {
if ( defined $3 ) {
if ( defined $template{$1} and ref $template{$1} ne "HASH" ) {
local $_;
$_ = $template{$1};
$template{$1} = ();
$template{$1}->{default} = $_;
} elsif ( not defined $template{$1} ) {
push ( @{$template{Fields}}, $1 );
}
$template{$1}->{$3} = $4;
} else {
$template{$1} = $4;
push ( @{$template{Fields}}, $1 );
}
} elsif ( ! m/^#/ ) {
$template{'Description-Long'} .= $_ . "\n";
}
}
print_template;
|