[PATCH 0 of 6] reStructuredText help output

Dan Villiom Podlaski Christiansen danchr at gmail.com
Fri Jul 10 07:36:13 CDT 2009

On 10/07/2009, at 13.54, Martin Geisler wrote:

> Hello everybody,
> I've been talking about using reStructuredText for the help strings
> and a couple of days ago I took at stab at turning the talk into code.

That's very nice indeed!

I once wrote up a small patch for installing the Zsh completion script  
through setup.py, hoping that it could be useful for something like  
this :)

It might be useful for you if you figure out how to integrate the  
generated files with distutils; I've attached it below. (It's a bit of  
a test, too, to see if Mail screws up inline patches.)


Dan Villiom Podlaski Christiansen
danchr at gmail.com

# HG changeset patch
# User Dan Villiom Podlaski Christiansen <danchr at gmail.com>
# Date 1247229008 -7200
# Node ID 2bd3c7b98188e6c9867c2a0fa0af8457de67bc4a
# Parent  a507bac702f1cb8fd2adef5965a924f1285d461d
setup: allow installation of data files into the regular data dir.

The Zsh completion script is used as an example and test case.
diff --git a/contrib/zsh_completion b/contrib/zsh/_hg
rename from contrib/zsh_completion
rename to contrib/zsh/_hg
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -157,9 +157,16 @@ except ImportError:

  class install_package_data(install_data):
      def finalize_options(self):
+        self.install_lib = None
-                                   ('install_lib', 'install_dir'))
+                                   ('install_lib', 'install_lib'))
+        self.install_lib = self.install_lib.rstrip(os.sep)
+        def expandoptions((k, v)):
+            if '[install_lib]' in k:
+                k = k.replace('[install_lib]', self.install_lib)
+            return k, v
+        self.data_files = map(expandoptions, self.data_files)

  class build_mo(build):

@@ -189,7 +196,8 @@ class build_mo(build):
              self.make_file([pofile], mofile, spawn, (cmd,))
-            self.distribution.data_files.append((join('mercurial',  
+            self.distribution.data_files.append((join('[install_lib]',
+                                                      'mercurial',  

  build.sub_commands.append(('build_mo', None))
@@ -245,10 +253,11 @@ if sys.platform == 'linux2' and os.uname
          packages.extend(['hgext.inotify', 'hgext.inotify.linux'])

-datafiles = []
+datafiles = [('zsh/site-functions', ['contrib/zsh/_hg'])]
  for root in ('templates', 'i18n'):
      for dir, dirs, files in os.walk(root):
-        datafiles.append((os.path.join('mercurial', dir),
+        datafiles.append((os.path.join('[install_lib]', 'mercurial',  
                            [os.path.join(dir, file_) for file_ in  


-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 1943 bytes
Desc: not available
Url : http://selenic.com/pipermail/mercurial-devel/attachments/20090710/1f78cd3a/attachment.bin 

More information about the Mercurial-devel mailing list