# for the URL to access. If that is unspecified, it will fallback to
# the hardcoded default value specified here.
DEFAULT_URL = "http://patchwork/xmlrpc/"
-CONFIG_FILES = [os.path.expanduser('~/.pwclientrc')]
+CONFIG_FILE = os.path.expanduser('~/.pwclientrc')
class Filter:
"""Filter for selecting patches."""
""" apply <ID> : Apply a patch (in the current dir, using -p1)
git-am <ID> : Apply a patch to current git branch using "git am"
get <ID> : Download a patch and save it locally
+ info <ID> : Display patchwork info about a given patch ID
projects : List all projects
states : Show list of potential patch states
list [str] : List patches, using the optional filters specified
def list_patches(patches):
"""Dump a list of patches to stdout."""
- print("%-5s %-12s %s" % ("ID", "State", "Name"))
- print("%-5s %-12s %s" % ("--", "-----", "----"))
+ print("%-7s %-12s %s" % ("ID", "State", "Name"))
+ print("%-7s %-12s %s" % ("--", "-----", "----"))
for patch in patches:
- print("%-5d %-12s %s" % (patch['id'], patch['state'], patch['name']))
+ print("%-7d %-12s %s" % (patch['id'], patch['state'], patch['name']))
def action_list(rpc, filter, submitter_str, delegate_str):
filter.resolve_ids(rpc)
for state in states:
print("%-5d %s" % (state['id'], state['name']))
+def action_info(rpc, patch_id):
+ patch = rpc.patch_get(patch_id)
+ s = "Information for patch id %d" % (patch_id)
+ print(s)
+ print('-' * len(s))
+ for key, value in sorted(patch.iteritems()):
+ print("- %- 14s: %s" % (key, unicode(value).encode("utf-8")))
+
def action_get(rpc, patch_id):
patch = rpc.patch_get(patch_id)
s = rpc.patch_get_mbox(patch_id)
url = DEFAULT_URL
config = ConfigParser.ConfigParser()
- config.read(CONFIG_FILES)
+ config.read([CONFIG_FILE])
# grab settings from config files
if config.has_option('base', 'url'):
if len(s) > 0:
print unicode(s).encode("utf-8")
- elif action == 'get' or action == 'save':
+ elif action in ('get', 'save', 'info'):
try:
patch_id = patch_id or int(args[0])
except:
sys.stderr.write("Invalid patch ID given\n")
sys.exit(1)
- action_get(rpc, patch_id)
+ if action == 'info':
+ action_info(rpc, patch_id)
+ else:
+ action_get(rpc, patch_id)
elif action == 'apply':
try: