diff options
author | Felix Fietkau <nbd@openwrt.org> | 2015-03-15 11:07:44 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2015-03-15 11:07:44 +0000 |
commit | b6ac0d799cb66f327aa187800959f6093455d8a5 (patch) | |
tree | a275eb3230072574cc5b6704abfe8c2bb3455bd9 /scripts/feeds | |
parent | acb43b3df75642955fceb58feea24a5046ce318c (diff) | |
download | openwrt-b6ac0d799cb66f327aa187800959f6093455d8a5.tar.gz openwrt-b6ac0d799cb66f327aa187800959f6093455d8a5.tar.bz2 openwrt-b6ac0d799cb66f327aa187800959f6093455d8a5.zip |
scripts/feeds: add support for searching for targets
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 44777
Diffstat (limited to 'scripts/feeds')
-rwxr-xr-x | scripts/feeds | 45 |
1 files changed, 44 insertions, 1 deletions
diff --git a/scripts/feeds b/scripts/feeds index 004e5c9c6a..aa33af9f48 100755 --- a/scripts/feeds +++ b/scripts/feeds @@ -28,10 +28,12 @@ $valid_mk or die "Unsupported version of make found: $mk\n"; my @feeds; my %build_packages; my %installed; +my %installed_targets; my %feed_cache; my $feed_package = {}; my $feed_src = {}; +my $feed_target = {}; sub parse_config() { my $line = 0; @@ -179,6 +181,16 @@ sub update_feed_via($$$$) { return 0; } +sub get_targets($) { + my $file = shift; + my @target = parse_target_metadata($file); + my %target; + foreach my $target (@target) { + $target{$target->{id}} = $target; + } + return %target +} + sub get_feed($) { my $feed = shift; @@ -191,11 +203,14 @@ sub get_feed($) { return; }; parse_package_metadata($file) or return; - $feed_cache{$feed} = [ { %package }, { %srcpackage } ]; + my %target = get_targets("./feeds/$feed.targetindex"); + + $feed_cache{$feed} = [ { %package }, { %srcpackage }, { %target } ]; } $feed_package = $feed_cache{$feed}->[0]; $feed_src = $feed_cache{$feed}->[1]; + $feed_target = $feed_cache{$feed}->[2]; return $feed_cache{$feed}->[0]; } @@ -204,6 +219,7 @@ sub get_installed() { clear_packages(); parse_package_metadata("./tmp/.packageinfo"); %installed = %package; + %installed_targets = get_targets("./tmp/.targetinfo"); } sub search_feed { @@ -234,6 +250,26 @@ sub search_feed { printf "\%-25s\t\%s\n", $pkg->{name}, $pkg->{title}; }; } + + foreach my $name (sort { lc($a) cmp lc($b) } keys %$feed_target) { + my $target = $feed_target->{$name}; + my $targetmatch = 1; + + foreach my $substr (@substr) { + my $match; + foreach my $key (qw(id name description)) { + $target->{$key} and $substr and $target->{$key} =~ m/$substr/i and $match = 1; + } + $match or undef $targetmatch; + }; + $targetmatch and do { + $display or do { + print "Search results in feed '$feed':\n"; + $display = 1; + }; + printf "TARGET: \%-17s\t\%s\n", $target->{id}, $target->{name}; + }; + } return 0; } @@ -258,6 +294,13 @@ sub list_feed { } } + foreach my $name (sort { lc($a) cmp lc($b) } keys %$feed_target) { + my $target = $feed_target->{$name}; + if($target->{name}) { + printf "TARGET: \%-24s\t\%s\n", $target->{id}, $target->{name}; + } + } + return 0; } |