From 1e887ddc8d805a76b59687bea9f520ccb0557223 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= Date: Wed, 5 Jun 2019 14:19:11 +0200 Subject: scripts/feeds: add src-include method MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The src-include method allows recursive inclusion of feeds.conf snippets. This can for example be used for adding static local feeds to feeds.conf.default without ever having to update the local feeds.conf: src-include defaults feeds.conf.default src-link custom /usr/local/src/lede/custom Signed-off-by: Bjørn Mork (cherry picked from commit 7a1b575ac4ede2778bb21cfafa7a1152d9d2555f) --- scripts/feeds | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/scripts/feeds b/scripts/feeds index 304ef6cbaf..a4dfd9e260 100755 --- a/scripts/feeds +++ b/scripts/feeds @@ -41,34 +41,49 @@ my $feed_src = {}; my $feed_target = {}; my $feed_vpackage = {}; -sub parse_config() { +sub parse_file($$); + +sub parse_file($$) { + my ($fname, $name) = @_; my $line = 0; - my %name; + my $fh; - open FEEDS, "feeds.conf" or - open FEEDS, "feeds.conf.default" or - die "Unable to open feeds configuration"; - while () { + open $fh, $fname or return undef; + while (<$fh>) { chomp; s/#.+$//; + $line++; next unless /\S/; my @line = split /\s+/, $_, 3; my @src; - $line++; my $valid = 1; $line[0] =~ /^src-[\w-]+$/ or $valid = 0; $line[1] =~ /^\w+$/ or $valid = 0; @src = split /\s+/, ($line[2] or ''); @src = ('') if @src == 0; - $valid or die "Syntax error in feeds.conf, line: $line\n"; + $valid or die "Syntax error in $fname, line: $line\n"; - $name{$line[1]} and die "Duplicate feed name '$line[1]', line: $line\n"; - $name{$line[1]} = 1; + $name->{$line[1]} and die "Duplicate feed name '$line[1]' in '$fname' line: $line\n"; + $name->{$line[1]} = 1; + + if ($line[0] eq "src-include") { + parse_file($line[2], $name) or + die "Unable to open included file '$line[2]'"; + next; + } push @feeds, [$line[0], $line[1], \@src]; } - close FEEDS; + close $fh; + return 1; +} + +sub parse_config() { + my %name; + parse_file("feeds.conf", \%name) or + parse_file("feeds.conf.default", \%name) or + die "Unable to open feeds configuration"; } sub update_location($$) -- cgit v1.2.3