File: setup.py

package info (click to toggle)
formiko 1.4.3-2.1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 448 kB
  • sloc: python: 2,370; xml: 65; makefile: 7
file content (149 lines) | stat: -rw-r--r-- 4,914 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#!/usr/bin/env python

from setuptools import setup
from docutils.core import publish_string
from docutils.writers.manpage import Writer

from io import open
from gzip import open as zopen
from distutils.command.build import build
from distutils.command.clean import clean
from distutils.command.install_data import install_data
from distutils import log
from os import path, makedirs, listdir
from shutil import rmtree

from formiko import __version__, __url__, __comment__


def doc():
    with open("README.rst", "r", encoding="utf-8") as readme:
        return readme.read().strip()


def icons_data():
    path = 'share/icons/hicolor'
    icons = [("%s/scalable/apps" % path, ["icons/formiko.svg"])]
    for size in (16, 22, 24, 32, 48, 64, 128, 256, 512):
        icons.append(("%s/%dx%d/apps" % (path, size, size),
                     ["icons/%dx%d/formiko.png" % (size, size)]))
    return icons


def man_page(writer, src, dst):
    with open(src, encoding="utf-8") as source:
        rst = source.read().format(version=__version__)
    with zopen(dst, 'wb') as destination:
        destination.write(publish_string(source=rst, writer=writer))


class XBuild(build):
    def initialize_options(self):
        build.initialize_options(self)
        self.man_base = None

    def finalize_options(self):
        build.finalize_options(self)
        if self.man_base is None:
            self.man_base = path.join(self.build_base, 'man')

    def run(self):
        build.run(self)
        log.info("building man pages")
        if self.dry_run:
            return

        writer = Writer()
        if not path.exists(self.man_base):
            makedirs(self.man_base)
        for page in ('formiko', 'formiko-vim'):
            log.info('manpage %s.rst -> %s/%s.1.gz'
                     % (page, self.man_base, page))
            man_page(writer, page+'.rst', '%s/%s.1.gz' % (self.man_base, page))


class XClean(clean):
    def initialize_options(self):
        clean.initialize_options(self)
        self.man_base = None

    def finalize_options(self):
        clean.finalize_options(self)
        if self.man_base is None:
            self.man_base = path.join(self.build_base, 'man')

    def run(self):
        clean.run(self)
        log.info("clean man pages")
        if self.dry_run:
            return

        if path.exists(self.man_base):
            rmtree(self.man_base)


class XInstallData(install_data):
    def initialize_options(self):
        install_data.initialize_options(self)
        self.man_base = None
        self.build_base = None

    def finalize_options(self):
        install_data.finalize_options(self)
        self.set_undefined_options('build', ('build_base', 'build_base'))
        if self.man_base is None:
            self.man_base = path.join(self.build_base, 'man')

    def run(self):
        self.data_files.append(
            ('share/man/man1',
             list("%s/%s" % (self.man_base, page)
                  for page in listdir(self.man_base))))
        install_data.run(self)


setup(
    name="formiko",
    version=__version__,
    description=__comment__,
    author="Ondrej Tuma",
    author_email="mcbig@zeropage.cz",
    url=__url__,
    packages=['formiko'],
    data_files=[('share/doc/formiko', ['README.rst', 'COPYING', 'ChangeLog',
                                       'AUTHORS']),
                ("share/applications", ["formiko.desktop",
                                        "formiko-vim.desktop"]),
                ("share/metainfo", ['formiko.metainfo.xml']),
                ('share/formiko/icons', ['icons/formiko.svg'])] + icons_data(),
    keywords=["doc", "html", "rst", "docutils", "md", "markdown", "editor"],
    license="BSD",
    long_description=doc(),
    classifiers=[
        "Development Status :: 5 - Production/Stable",
        "Environment :: X11 Applications :: GTK",
        "Intended Audience :: Developers",
        "Intended Audience :: End Users/Desktop",
        "License :: OSI Approved :: BSD License",
        "Natural Language :: English",
        "Operating System :: OS Independent",
        "Programming Language :: Python :: 2.7",
        "Programming Language :: Python :: 3",
        "Topic :: Documentation",
        "Topic :: Software Development :: Documentation",
        "Topic :: Text Editors :: Documentation",
        "Topic :: Text Editors :: Text Processing",
        "Topic :: Text Processing",
        "Topic :: Text Processing :: Markup",
        "Topic :: Text Processing :: Markup :: HTML",
        "Topic :: Utilities"],
    requires=['docutils (>= 0.12)', 'python_gi', 'webkit2', 'gtksourceview'],
    install_requires=['docutils >= 0.12'],
    entry_points={
        'gui_scripts': [
            'formiko = formiko.main:main',
            'formiko-vim = formiko.main:main_vim'
        ]
    },
    cmdclass={'build': XBuild, 'clean': XClean, 'install_data': XInstallData}
)