summaryrefslogtreecommitdiff
path: root/setup.py
diff options
context:
space:
mode:
Diffstat (limited to 'setup.py')
-rwxr-xr-xsetup.py42
1 files changed, 28 insertions, 14 deletions
diff --git a/setup.py b/setup.py
index 64ffb15..b9c751a 100755
--- a/setup.py
+++ b/setup.py
@@ -1,21 +1,30 @@
#!/usr/bin/env python3
-import os
import fnmatch
+import os
from distutils import log
-from setuptools import setup, find_packages
+
+from setuptools import setup
+from setuptools.command import build_py, sdist
+
+__manpages__ = 'git-*.rst'
+
def read(fname):
- return open(os.path.join(os.path.dirname(__file__), fname)).read()
+ with open(os.path.join(os.path.dirname(__file__), fname)) as f:
+ return f.read()
+
def glob(fname):
return fnmatch.filter(os.listdir(os.path.abspath(os.path.dirname(__file__))), fname)
+
def generate_manpage(src, dst):
import docutils.core
- log.info("generating a manpage from %s to %s", src, dst)
+ log.info("generating a manpage from %s as %s", src, dst)
docutils.core.publish_file(source_path=src, destination_path=dst, writer_name='manpage')
+
def man_name(fname):
import re
matches = re.compile(r'^:Manual section: *([0-9]*)', re.MULTILINE).search(read(fname))
@@ -27,40 +36,45 @@ def man_name(fname):
manfname = base + '.' + section
return manfname
+
def man_path(fname):
category = fname.rsplit('.', 1)[1]
return os.path.join('share', 'man', 'man' + category), [fname]
+
def man_files(pattern):
- return list(map(man_path, map(man_name, glob(pattern))))
+ return [man_path(man_name(f)) for f in glob(pattern)]
+
# monkey patch setuptools to use distutils owner/group functionality
-from setuptools.command import sdist
+# and build the manpage on build
sdist_org = sdist.sdist
+build_py_org = build_py.build_py
+
+
class sdist_new(sdist_org):
def initialize_options(self):
sdist_org.initialize_options(self)
self.owner = self.group = 'root'
-sdist.sdist = sdist_new
-__manpages__ = 'git-*.rst'
-from setuptools.command import build_py
-build_py_org = build_py.build_py
class build_py_new(build_py_org):
def run(self):
build_py_org.run(self)
if not self.dry_run:
for page in glob(__manpages__):
generate_manpage(page, man_name(page))
-build_py.build_py = build_py_new
+
+
+sdist.sdist = sdist_new # type: ignore
+build_py.build_py = build_py_new # type: ignore
__name__ = "git-crecord"
setup(
- data_files = [
+ data_files=[
(os.path.join('share', 'doc', __name__), glob('*.rst')),
(os.path.join('share', 'doc', __name__), glob('*.png')),
- (os.path.join('share', 'doc', __name__), ['CONTRIBUTORS', 'COPYING'])
- ] + man_files(__manpages__)
+ (os.path.join('share', 'doc', __name__), ['CONTRIBUTORS', 'COPYING']),
+ ] + man_files(__manpages__),
)