hgkw/keyword.py
branchstable
changeset 637 103120cace93
parent 636 d0c35f5fa25f
child 646 c2b1a05b35e1
--- a/hgkw/keyword.py	Mon Aug 03 11:53:13 2009 +0200
+++ b/hgkw/keyword.py	Wed Aug 05 16:57:21 2009 +0200
@@ -49,9 +49,11 @@
 lose speed in huge repositories.
 
 For [keywordmaps] template mapping and expansion demonstration and
-control run "hg kwdemo".
+control run "hg kwdemo". See "hg help templates" for a list of
+available templates and filters.
 
-An additional date template filter {date|utcdate} is provided.
+An additional date template filter {date|utcdate} is provided. It
+returns a date like "2006/09/18 15:13:13".
 
 The default template mappings (view with "hg kwdemo -d") can be
 replaced with customized keywords and templates. Again, run "hg
@@ -80,7 +82,7 @@
 from mercurial.lock import release
 from mercurial.node import nullid
 from mercurial.i18n import _
-import re, shutil, tempfile, time
+import re, shutil, tempfile
 
 commands.optionalrepo += ' kwdemo'
 
@@ -93,9 +95,8 @@
 # not when reading filelog, and unexpand when reading from working dir
 restricted = 'merge record resolve qfold qimport qnew qpush qrefresh qrecord'
 
-def utcdate(date):
-    '''Returns hgdate in cvs-like UTC format.'''
-    return time.strftime('%Y/%m/%d %H:%M:%S', time.gmtime(date[0]))
+# provide cvs-like UTC date filter
+utcdate = lambda x: util.datestr(x, '%Y/%m/%d %H:%M:%S')
 
 # make keyword tools accessible
 kwtools = {'templater': None, 'hgcmd': '', 'inc': [], 'exc': ['.hg*']}
@@ -276,10 +277,12 @@
     Show current, custom, or default keyword template maps and their
     expansions.
 
-    Extend current configuration by specifying maps as arguments and
-    optionally by reading from an additional hgrc file.
+    Extend the current configuration by specifying maps as arguments
+    and using -f/--rcfile to source an external hgrc file.
 
-    Override current keyword template maps with "default" option.
+    Use -d/--default to disable current configuration.
+
+    See "hg help templates" for information on templates and filters.
     '''
     def demoitems(section, items):
         ui.write('[%s]\n' % section)
@@ -287,40 +290,47 @@
             ui.write('%s = %s\n' % (k, v))
 
     msg = 'hg keyword config and expansion example'
-    kwstatus = 'current'
     fn = 'demo.txt'
     branchname = 'demobranch'
     tmpdir = tempfile.mkdtemp('', 'kwdemo.')
     ui.note(_('creating temporary repository at %s\n') % tmpdir)
     repo = localrepo.localrepository(ui, tmpdir, True)
     ui.setconfig('keyword', fn, '')
+
+    uikwmaps = ui.configitems('keywordmaps')
     if args or opts.get('rcfile'):
-        kwstatus = 'custom'
-    if opts.get('rcfile'):
-        ui.readconfig(opts.get('rcfile'))
-    if opts.get('default'):
-        kwstatus = 'default'
+        ui.status(_('\n\tconfiguration using custom keyword template maps\n'))
+        if uikwmaps:
+            ui.status(_('\textending current template maps\n'))
+        if opts.get('default') or not uikwmaps:
+            ui.status(_('\toverriding default template maps\n'))
+        if opts.get('rcfile'):
+            ui.readconfig(opts.get('rcfile'))
+        if args:
+            # simulate hgrc parsing
+            rcmaps = ['[keywordmaps]\n'] + [a + '\n' for a in args]
+            fp = repo.opener('hgrc', 'w')
+            fp.writelines(rcmaps)
+            fp.close()
+            ui.readconfig(repo.join('hgrc'))
+        kwmaps = dict(ui.configitems('keywordmaps'))
+    elif opts.get('default'):
+        ui.status(_('\n\tconfiguration using default keyword template maps\n'))
         kwmaps = kwtemplater.templates
-        if ui.configitems('keywordmaps'):
-            # override maps from optional rcfile
+        if uikwmaps:
+            ui.status(_('\tdisabling current template maps\n'))
             for k, v in kwmaps.iteritems():
                 ui.setconfig('keywordmaps', k, v)
-    elif args:
-        # simulate hgrc parsing
-        rcmaps = ['[keywordmaps]\n'] + [a + '\n' for a in args]
-        fp = repo.opener('hgrc', 'w')
-        fp.writelines(rcmaps)
-        fp.close()
-        ui.readconfig(repo.join('hgrc'))
-    if not opts.get('default'):
-        kwmaps = dict(ui.configitems('keywordmaps')) or kwtemplater.templates
+    else:
+        ui.status(_('\n\tconfiguration using current keyword template maps\n'))
+        kwmaps = dict(uikwmaps) or kwtemplater.templates
+
     uisetup(ui)
     reposetup(ui, repo)
     for k, v in ui.configitems('extensions'):
         if k.endswith('keyword'):
             extension = '%s = %s' % (k, v)
             break
-    ui.status(_('\n\tconfig using %s keyword template maps\n') % kwstatus)
     ui.write('[extensions]\n%s\n' % extension)
     demoitems('keyword', ui.configitems('keyword'))
     demoitems('keywordmaps', kwmaps.iteritems())
@@ -328,7 +338,7 @@
     repo.wopener(fn, 'w').write(keywords)
     repo.add([fn])
     path = repo.wjoin(fn)
-    ui.note(_('\n%s keywords written to %s:\n') % (kwstatus, path))
+    ui.note(_('\nkeywords written to %s:\n') % path)
     ui.note(keywords)
     ui.note('\nhg -R "%s" branch "%s"\n' % (tmpdir, branchname))
     # silence branch command if not verbose
@@ -342,8 +352,7 @@
     ui.note(_('unhooked all commit hooks\n'))
     ui.note('hg -R "%s" ci -m "%s"\n' % (tmpdir, msg))
     repo.commit(text=msg)
-    fmt = ui.verbose and ' in %s' % path or ''
-    ui.status(_('\n\t%s keywords expanded%s\n') % (kwstatus, fmt))
+    ui.status(_('\n\tkeywords expanded\n'))
     ui.write(repo.wread(fn))
     ui.debug(_('\nremoving temporary repository %s\n') % tmpdir)
     shutil.rmtree(tmpdir, ignore_errors=True)