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}
)
|