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 | 121595b9395b60bb07d8a7e093477004ec33ec19 (patch) | |
tree | fd1c5e1e9c3e6bfb8f63fbcbbd229bc0703098b2 /scripts | |
parent | 2a7aff42fd7566922b77edf291eee7174e61271e (diff) | |
download | upstream-121595b9395b60bb07d8a7e093477004ec33ec19.tar.gz upstream-121595b9395b60bb07d8a7e093477004ec33ec19.tar.bz2 upstream-121595b9395b60bb07d8a7e093477004ec33ec19.zip |
scripts/feeds: add support for searching for targets
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@44777 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'scripts')
-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; } |