Re: [OpenWrt-Devel] [PATCH] [scripts] feeds: search packages by license

2015-01-20 Thread Eric Schultz
Sure, will do.

On Tue, Jan 20, 2015 at 12:40 AM, John Crispin blo...@openwrt.org wrote:


 On 19/12/2014 23:47, Eric Schultz wrote:
 Currently, the feeds scripts provides no way to filter by packages
 by license or no license. This patch adds a search feature to feeds
 which can be used to search packages by license or by no license.

 Signed-off-by: Eric Schultz eschu...@prplfoundation.org

 --- scripts/feeds | 90
 ++- 1 file
 changed, 77 insertions(+), 13 deletions(-)


 [...]


 @@ -642,6 +704,8 @@ Commands: search [options] substring: Search
 for a package Options: -r feedname: Only search in this feed +
 -l license:  Include packages with this license +   -n:
 Include packages without a license tag


 if i read this correctly the current behavior is changed which will
 inevitably lead to a trillion tickets with package XYZ is missing

 can you change the option to Only include packages with a license tag






 uninstall -a|package: Uninstall a package Options:




-- 
Eric Schultz, Community Manager, prpl Foundation
http://www.prplfoundation.org
eschu...@prplfoundation.org
cell: 920-539-0404
skype: ericschultzwi
@EricPrpl
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel


Re: [OpenWrt-Devel] [PATCH] [scripts] feeds: search packages by license

2015-01-19 Thread John Crispin


On 19/12/2014 23:47, Eric Schultz wrote:
 Currently, the feeds scripts provides no way to filter by packages
 by license or no license. This patch adds a search feature to feeds
 which can be used to search packages by license or by no license.
 
 Signed-off-by: Eric Schultz eschu...@prplfoundation.org
 
 --- scripts/feeds | 90
 ++- 1 file
 changed, 77 insertions(+), 13 deletions(-)
 

[...]

 
 @@ -642,6 +704,8 @@ Commands: search [options] substring: Search
 for a package Options: -r feedname: Only search in this feed +
 -l license:  Include packages with this license +   -n:
 Include packages without a license tag
 

if i read this correctly the current behavior is changed which will
inevitably lead to a trillion tickets with package XYZ is missing

can you change the option to Only include packages with a license tag






 uninstall -a|package: Uninstall a package Options:
 
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel


[OpenWrt-Devel] [PATCH] [scripts] feeds: search packages by license

2014-12-19 Thread Eric Schultz
Currently, the feeds scripts provides no way to filter by packages by license 
or no license. 
This patch adds a search feature to feeds which can be used to search packages 
by license or by no license.

Signed-off-by: Eric Schultz eschu...@prplfoundation.org

---
 scripts/feeds | 90 ++-
 1 file changed, 77 insertions(+), 13 deletions(-)

diff --git a/scripts/feeds b/scripts/feeds
index 31ad544..1fe197f 100755
--- a/scripts/feeds
+++ b/scripts/feeds
@@ -151,7 +151,7 @@ sub update_feed_via() {
my $name = shift;
my $src = shift;
my $relocate = shift;
-   
+
my $m = $update_method{$type};
my $localpath = ./feeds/$name;
my $safepath = $localpath;
@@ -173,7 +173,7 @@ sub update_feed_via() {
} else {
system(cd '$safepath'; $m-{'update'}) == 0 or return 1;
}
-   
+
return 0;
 }
 
@@ -206,41 +206,103 @@ sub get_installed() {
 
 sub search_feed {
my $feed = shift;
+   my $search_parameters = shift;
my @substr = @_;
+
my $display;
+   return unless @substr  0 or $search_parameters-{use_params};
 
-   return unless @substr  0;
get_feed($feed);
foreach my $name (sort { lc($a) cmp lc($b) } keys %$feed_package) {
+
my $pkg = $feed_package-{$name};
my $substr;
my $pkgmatch = 1;
 
next if $pkg-{vdepends};
-   foreach my $substr (@substr) {
-   my $match;
-   foreach my $key (qw(name title description src)) {
-   $pkg-{$key} and $substr and $pkg-{$key} =~ 
m/$substr/i and $match = 1;
-   }
-   $match or undef $pkgmatch;
-   };
+if ( $search_parameters-{use_params})
+   {
+   $pkgmatch = do_package_tags_match($pkg, 
$search_parameters);
+   }
+
+if (! $search_parameters-{use_params} or ( 
$search_parameters-{use_params} and $pkgmatch))
+   {
+   foreach my $substr (@substr) {
+   my $match;
+   foreach my $key (qw(name title description 
src)) {
+   $pkg-{$key} and $substr and 
$pkg-{$key} =~ m/$substr/i and $match = 1;
+   }
+
+   $match or undef $pkgmatch;
+   };
+   }
$pkgmatch and do {
$display or do {
print Search results in feed '$feed':\n;
$display = 1;
};
-   printf \%-25s\t\%s\n, $pkg-{name}, $pkg-{title};
+   my $output_print = format_search_parameter_output($pkg, 
$search_parameters);
+   printf \%-20s\%s\%s\n, $pkg-{name}, $output_print, 
$pkg-{title};
};
}
return 0;
 }
 
+sub format_search_parameter_output
+{
+   my $pkg = shift;
+   my $search_parameters = shift;
+
+   my $output = \t;
+
+   if (!$search_parameters-{use_params}) {
+   return $output;
+   }
+
+   if (defined($search_parameters-{license})) {
+   $output = $output . sprintf((\%-10s\t), $pkg-{license});
+   }
+
+   return $output;
+}
+
+sub do_package_tags_match {
+   my $pkg = shift;
+  my $parameterized_search = shift;
+
+
+   my $match = 0;
+   if ($pkg-{license} and $parameterized_search-{license}) {
+   my $substr = $parameterized_search-{license};
+   my @results = grep(/^\Q$substr\E.*$/i, split(/\s/, 
$pkg-{license}));
+
+   $match = @results  0;
+   }
+
+   if ($parameterized_search-{no_license}) {
+   $match = !defined($pkg-{license});
+   }
+
+   return $match;
+}
+
 sub search {
my %opts;
 
-   getopt('r:', \%opts);
+   getopts('r:l:n', \%opts);
+   my %search_parameters;
+   if (defined($opts{l})) {
+   $search_parameters{license} = $opts{l};
+   $search_parameters{use_params} = 1;
+   }
+
+   if (defined($opts{n})) {
+   $search_parameters{no_license} = $opts{n};
+   $search_parameters{use_params} = 1;
+   }
+
foreach my $feed (@feeds) {
-   search_feed($feed-[1], @ARGV) if (!defined($opts{r}) or 
$opts{r} eq $feed-[1]);
+   search_feed($feed-[1], \%search_parameters, @ARGV) if 
(!defined($opts{r}) or $opts{r} eq $feed-[1]);
}
 }
 
@@ -642,6 +704,8 @@ Commands:
search [options] substring: Search for a package
Options:
-r feedname: Only search in this feed
+   -l license:  Include packages with this license
+   -n: