From a601573915db159ee27a70446600f59b6de9cdbe Mon Sep 17 00:00:00 2001 From: "nix@nixweb.com" Date: Tue, 18 Aug 2009 00:59:17 +0000 Subject: make "fcl ls -lrt" work git-svn-id: http://freebase-python.googlecode.com/svn/trunk@211 5914aa95-5b3a-0410-a3b5-7b719e7fe9b2 --- freebase/fcl/cmdutil.py | 2 +- freebase/fcl/commands.py | 32 ++++++++++++++++++++++---------- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/freebase/fcl/cmdutil.py b/freebase/fcl/cmdutil.py index 4b6f0dc..f2db878 100644 --- a/freebase/fcl/cmdutil.py +++ b/freebase/fcl/cmdutil.py @@ -42,7 +42,7 @@ class CmdException(Exception): # decorator for adding subcommand option parsers def option(argname, *args, **kws): - kws['dest'] = 'long' + kws['dest'] = argname def decorate(f): oparser = getattr(f, 'oparser', None) if oparser is None: diff --git a/freebase/fcl/commands.py b/freebase/fcl/commands.py index 1ecfb74..bb31d19 100755 --- a/freebase/fcl/commands.py +++ b/freebase/fcl/commands.py @@ -126,29 +126,37 @@ def old_cmd_pwid(fb): @option('long', '-l', default=False, action='store_true', help='show time and permission') -def cmd_ls(fb, path=None, long=False): +@option('timesort', '-t', default=False, action='store_true', help='sort by time') +@option('revsort', '-r', default=False, action='store_true', help='reverse sort order') +def cmd_ls(fb, path=None, long=False, timesort=False, revsort=False): """list the keys in a namespace %prog ls [id] """ path = fb.absid(path) # ignore trailing / - path = re.sub('/$', '', path) + if len(path) > 1: + path = re.sub('/$', '', path) kq = { 'value': None, 'namespace': { - 'id': None, - 'type': [] + 'id': None }, 'sort': 'value', 'optional':True - } + } + + if long or timesort: + kq['link'] = { + 'timestamp': None, + 'creator': None + } + if timesort: + kq['sort'] = 'link.timestamp' - if long: - kq['namespace']['permission'] = None - kq['namespace']['creator'] = None - + if revsort: + kq['sort'] = '-' + kq['sort'] q = {'id': path, '/type/namespace/keys': [kq] @@ -162,7 +170,10 @@ def cmd_ls(fb, path=None, long=False): for mk in r['/type/namespace/keys']: if (long): - out(mk.value, mk.namespace.permission, mk.namespace.creator) + # trim off the /user/ + creator = re.sub('^/user/', '', mk.link.creator) + timestamp = mk.link.timestamp + out(mk.value, creator, timestamp) else: out(mk.value) @@ -174,6 +185,7 @@ def cmd_ls(fb, path=None, long=False): print mk.value, mk.namespace.id+suffix + def cmd_mkdir(fb, path): """create a new freebase namespace %prog mkdir id -- cgit v1.3.1