aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Dolbec <dolsen@gentoo.org>2015-01-06 12:20:30 -0800
committerBrian Dolbec <dolsen@gentoo.org>2015-01-06 13:19:39 -0800
commit7bfa40a4b350767ec8e8d2812620bb8be6ce48a4 (patch)
tree073db41c91bb62006a565709f13dd1609022ac99 /gkeys/setup.py
parentpy2man/options.py: Add missed '1name' option (diff)
downloadgentoo-keys-7bfa40a4b350767ec8e8d2812620bb8be6ce48a4.tar.gz
gentoo-keys-7bfa40a4b350767ec8e8d2812620bb8be6ce48a4.tar.bz2
gentoo-keys-7bfa40a4b350767ec8e8d2812620bb8be6ce48a4.zip
gkeys-gen: Setup.py updates for man page generation
Diffstat (limited to 'gkeys/setup.py')
-rwxr-xr-xgkeys/setup.py76
1 files changed, 73 insertions, 3 deletions
diff --git a/gkeys/setup.py b/gkeys/setup.py
index 23af045..d6b38af 100755
--- a/gkeys/setup.py
+++ b/gkeys/setup.py
@@ -1,11 +1,26 @@
#!/usr/bin/env python
+
+import collections
import os
import sys
-from distutils.core import setup
+from distutils.core import setup, Command
+from distutils.command.build import build
+
from gkeys import __version__, __license__
+from gkeys import Gkeys_Map
+from gkeys.action_map import Action_Map, Available_Actions
+
+try:
+ from py2man import manpages
+except ImportError:
+ print('creating py2man symlink')
+ os.symlink('../py2man', 'py2man')
+ from py2man import manpages
+
+
# this affects the names of all the directories we do stuff with
sys.path.insert(0, './')
@@ -18,6 +33,57 @@ except ImportError:
EPREFIX=''
+class x_build(build):
+ """ Build command with extra build_man call. """
+
+ def run(self):
+ build.run(self)
+ self.run_command('build_man')
+
+
+class build_man(Command):
+ """ Perform substitutions in manpages. """
+
+ user_options = [
+ ]
+
+ def initialize_options(self):
+ self.build_base = None
+
+ def finalize_options(self):
+ self.set_undefined_options('build',
+ ('build_base', 'build_base'))
+
+ def run(self):
+ # create the main page
+ basepath = os.path.dirname(__file__)
+ docpath = os.path.join(basepath, 'doc')
+ templatepath = os.path.dirname(manpages.__file__)
+ man = manpages.ManPage('gkeys', __version__, None,
+ docpath, Gkeys_Map['authors'])
+ man.read_template(templatepath, 'command.template')
+ man.make_prog(Gkeys_Map)
+ man.read_template(templatepath, 'sub-command.template')
+ man.make_subpages(Action_Map, Available_Actions)
+
+
+def get_manpages():
+ linguas = os.environ.get('LINGUAS')
+ if linguas is not None:
+ linguas = linguas.split()
+
+ for dirpath, dirnames, filenames in os.walk('doc'):
+ groups = collections.defaultdict(list)
+ for f in filenames:
+ fn, suffix = f.rsplit('.', 1)
+ groups[suffix].append(os.path.join(dirpath, f))
+
+ topdir = dirpath[len('doc/'):]
+ if not topdir or linguas is None or topdir in linguas:
+ for g, mans in groups.items():
+ yield [os.path.join('$mandir', topdir, 'man%s' % g), mans]
+
+
setup(
name='gkeys',
version=__version__,
@@ -30,13 +96,17 @@ setup(
download_url='',
packages=['gkeys'],
scripts=['bin/gkeys'],
- data_files=(
+ data_files=list(get_manpages()) + [
(os.path.join(os.sep, EPREFIX.lstrip(os.sep), 'etc/gkeys/'), ['etc/gkeys.conf']),
(os.path.join(os.sep, EPREFIX.lstrip(os.sep), 'etc/gkeys/'), ['etc/gkeys.conf.sample']),
- ),
+ ],
license=__license__,
long_description=open('README.md').read(),
keywords='gpg',
+ cmdclass = {
+ 'build': x_build,
+ 'build_man': build_man,
+ },
classifiers=[
'Development Status :: 3 - Alpha',
'Intended Audience :: Developers, Users',