From 5e0cd4c69cf35f64dc7327da25213775d273bc21 Mon Sep 17 00:00:00 2001 From: Thomas Leonard Date: Fri, 28 Jan 2011 17:58:11 +0000 Subject: [PATCH] Added list-feeds sub-command Suggested by Tim Cuthbertson. --- 0install.1 | 11 +++++++++-- tests/testinstall.py | 10 +++++++++- zeroinstall/cmd/__init__.py | 2 +- zeroinstall/cmd/list_feeds.py | 26 ++++++++++++++++++++++++++ 4 files changed, 45 insertions(+), 4 deletions(-) create mode 100644 zeroinstall/cmd/list_feeds.py diff --git a/0install.1 b/0install.1 index 8801312..7685dd8 100644 --- a/0install.1 +++ b/0install.1 @@ -16,16 +16,18 @@ .SS Other commands: -.B 0install add-feed \fBFEED\fP - .B 0install config [NAME [VALUE]] .B 0install import \fBFEED\fP .B 0install list \fBPATTERN\fP +.B 0install add-feed \fBFEED\fP + .B 0install remove-feed \fBFEED\fP +.B 0install list-feeds \fBURI\fP + .SH DESCRIPTION .PP Zero Install is a decentralised cross-distribution software installation @@ -278,6 +280,11 @@ other programs). .PP Un-register a feed, reversing the effect of `add-feed'. +.SS 0install list-feeds URI + +.PP +List all extra feeds added to URI using `add-feed'. + .SS 0install list PATTERN .PP diff --git a/tests/testinstall.py b/tests/testinstall.py index 9462b71..714ccb4 100755 --- a/tests/testinstall.py +++ b/tests/testinstall.py @@ -248,12 +248,17 @@ class TestInstall(BaseTest): assert cmd.config.TimeInterval.format(secs) == period def testAddFeed(self): + binary_iface = self.config.iface_cache.get_interface('http://foo/Binary.xml') + + out, err = self.run_0install(['list-feeds', binary_iface.uri]) + assert "(no feeds)" in out, out + assert not err, err + out, err = self.run_0install(['add-feed']) assert out.lower().startswith("usage:") assert 'NEW-FEED' in out sys.stdin = Reply('1') - binary_iface = self.config.iface_cache.get_interface('http://foo/Binary.xml') assert binary_iface.extra_feeds == [] out, err = self.run_0install(['add-feed', 'Source.xml']) @@ -261,6 +266,9 @@ class TestInstall(BaseTest): assert "Add as feed for 'http://foo/Binary.xml'" in out, out assert len(binary_iface.extra_feeds) == 1 + out, err = self.run_0install(['list-feeds', binary_iface.uri]) + assert "Source.xml" in out + assert not err, err out, err = self.run_0install(['remove-feed', 'Source.xml']) assert not err, err diff --git a/zeroinstall/cmd/__init__.py b/zeroinstall/cmd/__init__.py index c47c2df..cf063ed 100644 --- a/zeroinstall/cmd/__init__.py +++ b/zeroinstall/cmd/__init__.py @@ -13,7 +13,7 @@ import logging from zeroinstall import SafeException valid_commands = ['select', 'download', 'run', 'update', - 'config', 'import', 'list', 'add-feed', 'remove-feed'] + 'config', 'import', 'list', 'add-feed', 'remove-feed', 'list-feeds'] class UsageError(Exception): pass diff --git a/zeroinstall/cmd/list_feeds.py b/zeroinstall/cmd/list_feeds.py new file mode 100644 index 0000000..615e2c1 --- /dev/null +++ b/zeroinstall/cmd/list_feeds.py @@ -0,0 +1,26 @@ +""" +The B{0install list-feeds} command-line interface. +""" + +# Copyright (C) 2011, Thomas Leonard +# See the README file for details, or visit http://0install.net. + +from zeroinstall import _ +from zeroinstall.cmd import UsageError +from zeroinstall.injector import model + +syntax = "URI" + +def add_options(parser): + pass + +def handle(config, options, args): + if len(args) != 1: raise UsageError() + uri = model.canonical_iface_uri(args[0]) + iface = config.iface_cache.get_interface(uri) + + if iface.extra_feeds: + for f in iface.extra_feeds: + print f.uri + else: + print _("(no feeds)") -- 2.11.4.GIT