From: Mirko Vogt <mirko@openwrt.org>
Date: Tue, 24 Apr 2012 12:56:18 +0000 (+0000)
Subject: include revisions of feeds when listing them
X-Git-Tag: reboot~14152
X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=2ebcd4707c78e7cea9f2de59cb88214e69fe9c6f;p=openwrt%2Fopenwrt.git

include revisions of feeds when listing them

SVN-Revision: 31467
---

diff --git a/scripts/feeds b/scripts/feeds
index a9b2eb980a..b423d8ee1a 100755
--- a/scripts/feeds
+++ b/scripts/feeds
@@ -105,22 +105,27 @@ my %update_method = (
 	'src-svn' => {
 		'init'		=> "svn checkout '%s' '%s'",
 		'update'	=> "svn update",
-		'controldir'	=> ".svn"},
+		'controldir'	=> ".svn",
+		'revision'	=> "svn info | grep 'Revision' | cut -d ' ' -f 2 | tr -d '\n'"},
 	'src-cpy' => {
 		'init'		=> "cp -Rf '%s' '%s'",
-		'update'	=> ""},
+		'update'	=> "",
+		'revision'	=> "echo -n 'local'"},
 	'src-link' => {
 		'init'		=> "ln -s '%s' '%s'",
-		'update'	=> ""},
+		'update'	=> "",
+		'revision'	=> "echo -n 'local'"},
 	'src-git' => {
-		'init'		=> "git clone --depth 1 '%s' '%s'",
-		'init_branch'	=> "git clone --depth 1 --branch '%s' '%s' '%s'",
+		'init'		=> "git clone '%s' '%s'",
+		'init_branch'	=> "git clone --branch '%s' '%s' '%s'",
 		'update'	=> "git pull",
-		'controldir'	=> ".git"},
+		'controldir'	=> ".git",
+		'revision'	=> "git show --abbrev-commit HEAD | head -n 1 | cut -d ' ' -f 2 | tr -d '\n'"},
 	'src-gitsvn' => {
-                'init'          => "git svn clone -r HEAD '%s' '%s'",
-                'update'        => "git svn rebase",
-                'controldir'    => ".git"},
+		'init'	=> "git svn clone -r HEAD '%s' '%s'",
+		'update'	=> "git svn rebase",
+		'controldir'	=> ".git",
+		'revision'	=> "git show --abbrev-commit HEAD | head -n 1 | cut -d ' ' -f 2 | tr -d '\n'"},
 	'src-bzr' => {
 		'init'		=> "bzr checkout --lightweight '%s' '%s'",
 		'update'	=> "bzr update",
@@ -249,14 +254,31 @@ sub list_feed {
 sub list {
 	my %opts;
 
-	getopts('r:sh', \%opts);
+	getopts('r:d:sh', \%opts);
 	if ($opts{h}) {
 		usage();
 		return 0;
 	}
 	if ($opts{s}) {
 		foreach my $feed (@feeds) {
-			printf "\%-32s\tURL: %s\n", $feed->[1], join(", ", @{$feed->[2]});
+			my $localpath = "./feeds/$feed->[1]";
+			my $m = $update_method{$feed->[0]};
+			my $revision;
+			if( !$m->{'revision'} ) {
+				$revision = "X";
+			}
+			elsif( $m->{'controldir'} && -d "$localpath/$m->{'controldir'}" ) {
+				$revision = `cd '$localpath'; $m->{'revision'}`;
+			}
+			else {
+				$revision = "local";
+			}
+			if ($opts{d}) {
+				printf "%s%s%s%s%s%s%s\n", $feed->[1], $opts{d}, $feed->[0], $opts{d}, $revision, $opts{d}, join(", ", @{$feed->[2]});
+			}
+			else {
+				printf "\%-8s \%-8s \%-8s \%s\n", $feed->[1], $feed->[0], $revision, join(", ", @{$feed->[2]});
+			}
 		}
 		return 0;
 	}
@@ -564,10 +586,11 @@ sub usage() {
 Usage: $0 <command> [options]
 
 Commands:
-	list [options]: List feeds and their content
+	list [options]: List feeds, their content and revisions (if installed)
 	Options:
-	    -s :           List of feed names and their URL.
-	    -r <feedname>: List packages of specified feed.
+	    -s :            List of feed names and their URL.
+	    -r <feedname>:  List packages of specified feed.
+	    -d <delimiter>: Use specified delimiter to distinguish rows (default: spaces)
 
 	install [options] <package>: Install a package
 	Options: