From 331db999e0306539940965123a001da135b0ac62 Mon Sep 17 00:00:00 2001 From: Jeremy Kerr Date: Wed, 10 Sep 2008 12:08:01 +1000 Subject: Allow pwclient to accept patch hashes Signed-off-by: Jeremy Kerr --- apps/patchwork/bin/pwclient | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) (limited to 'apps/patchwork/bin/pwclient') diff --git a/apps/patchwork/bin/pwclient b/apps/patchwork/bin/pwclient index 5b2c2da..9b35240 100755 --- a/apps/patchwork/bin/pwclient +++ b/apps/patchwork/bin/pwclient @@ -119,6 +119,9 @@ def usage(): -w : Filter by submitter (name, e-mail substring search) -d : Filter by delegate (name, e-mail substring search) -n : Restrict number of results\n""") + sys.stderr.write("""\nActions that take an ID argument can also be \ +invoked with: + -h : Lookup by patch hash\n""") sys.exit(1) def project_id_by_name(rpc, linkname): @@ -284,11 +287,18 @@ def action_update_patch(rpc, patch_id, state = None, commit = None): if not success: sys.stderr.write("Patch not updated\n") +def patch_id_from_hash(rpc, hash): + patch = rpc.patch_get_by_hash(hash) + if patch == {}: + return None + + return patch['id'] + auth_actions = ['update'] def main(): try: - opts, args = getopt.getopt(sys.argv[2:], 's:p:w:d:n:c:') + opts, args = getopt.getopt(sys.argv[2:], 's:p:w:d:n:c:h:') except getopt.GetoptError, err: print str(err) usage() @@ -305,6 +315,7 @@ def main(): project_str = "" commit_str = "" state_str = "" + hash_str = "" url = DEFAULT_URL config = ConfigParser.ConfigParser() @@ -328,6 +339,8 @@ def main(): delegate_str = value elif name == '-c': commit_str = value + elif name == '-h': + hash_str = value elif name == '-n': try: filt.add("max_count", int(value)) @@ -369,6 +382,14 @@ def main(): sys.stderr.write("Unable to connect to %s\n" % url) sys.exit(1) + patch_id = None + if hash_str: + patch_id = patch_id_from_hash(rpc, hash_str) + if patch_id is None: + sys.stderr.write("No patch has the hash provided") + sys.exit(1) + + if action == 'list' or action == 'search': if len(args) > 0: filt.add("name__icontains", args[0]) @@ -382,7 +403,7 @@ def main(): elif action == 'view': try: - patch_id = int(args[0]) + patch_id = patch_id or int(args[0]) except: sys.stderr.write("Invalid patch ID given\n") sys.exit(1) @@ -393,7 +414,7 @@ def main(): elif action == 'get' or action == 'save': try: - patch_id = int(args[0]) + patch_id = patch_id or int(args[0]) except: sys.stderr.write("Invalid patch ID given\n") sys.exit(1) @@ -402,7 +423,7 @@ def main(): elif action == 'apply': try: - patch_id = int(args[0]) + patch_id = patch_id or int(args[0]) except: sys.stderr.write("Invalid patch ID given\n") sys.exit(1) @@ -411,7 +432,7 @@ def main(): elif action == 'update': try: - patch_id = int(args[0]) + patch_id = patch_id or int(args[0]) except: sys.stderr.write("Invalid patch ID given\n") sys.exit(1) -- cgit v1.2.3