|
|
@@ -2,13 +2,14 @@ package metadata;
|
|
|
use base 'Exporter';
|
|
|
use strict;
|
|
|
use warnings;
|
|
|
-our @EXPORT = qw(%package %srcpackage %category %subdir %preconfig clear_packages parse_package_metadata get_multiline);
|
|
|
+our @EXPORT = qw(%package %srcpackage %category %subdir %preconfig %features clear_packages parse_package_metadata get_multiline);
|
|
|
|
|
|
our %package;
|
|
|
our %preconfig;
|
|
|
our %srcpackage;
|
|
|
our %category;
|
|
|
our %subdir;
|
|
|
+our %features;
|
|
|
|
|
|
sub get_multiline {
|
|
|
my $fh = shift;
|
|
|
@@ -28,11 +29,13 @@ sub clear_packages() {
|
|
|
%package = ();
|
|
|
%srcpackage = ();
|
|
|
%category = ();
|
|
|
+ %features = ();
|
|
|
}
|
|
|
|
|
|
sub parse_package_metadata($) {
|
|
|
my $file = shift;
|
|
|
my $pkg;
|
|
|
+ my $feature;
|
|
|
my $makefile;
|
|
|
my $preconfig;
|
|
|
my $subdir;
|
|
|
@@ -55,6 +58,7 @@ sub parse_package_metadata($) {
|
|
|
};
|
|
|
next unless $src;
|
|
|
/^Package:\s*(.+?)\s*$/ and do {
|
|
|
+ undef $feature;
|
|
|
$pkg = {};
|
|
|
$pkg->{src} = $src;
|
|
|
$pkg->{makefile} = $makefile;
|
|
|
@@ -69,6 +73,24 @@ sub parse_package_metadata($) {
|
|
|
$package{$1} = $pkg;
|
|
|
push @{$srcpackage{$src}}, $pkg;
|
|
|
};
|
|
|
+ /^Feature:\s*(.+?)\s*$/ and do {
|
|
|
+ undef $pkg;
|
|
|
+ $feature = {};
|
|
|
+ $feature->{name} = $1;
|
|
|
+ $feature->{priority} = 0;
|
|
|
+ };
|
|
|
+ $feature and do {
|
|
|
+ /^Target-Name:\s*(.+?)\s*$/ and do {
|
|
|
+ $features{$1} or $features{$1} = [];
|
|
|
+ push @{$features{$1}}, $feature;
|
|
|
+ };
|
|
|
+ /^Target-Title:\s*(.+?)\s*$/ and $feature->{target_title} = $1;
|
|
|
+ /^Feature-Priority:\s*(\d+)\s*$/ and $feature->{priority} = $1;
|
|
|
+ /^Feature-Name:\s*(.+?)\s*$/ and $feature->{title} = $1;
|
|
|
+ /^Feature-Description:/ and $feature->{description} = get_multiline(\*FILE, "\t\t\t");
|
|
|
+ next;
|
|
|
+ };
|
|
|
+ next unless $pkg;
|
|
|
/^Version: \s*(.+)\s*$/ and $pkg->{version} = $1;
|
|
|
/^Title: \s*(.+)\s*$/ and $pkg->{title} = $1;
|
|
|
/^Menu: \s*(.+)\s*$/ and $pkg->{menu} = $1;
|