From 121595b9395b60bb07d8a7e093477004ec33ec19 Mon Sep 17 00:00:00 2001
From: Felix Fietkau <nbd@openwrt.org>
Date: Sun, 15 Mar 2015 11:07:44 +0000
Subject: 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
---
 scripts/feeds | 45 ++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 44 insertions(+), 1 deletion(-)

(limited to 'scripts/feeds')

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;
 }
 
-- 
cgit v1.2.3