Update description in README and pdfjoin.rst.
[pdftools:pdfjoin.git] / setup.py
1 """
2 ``pdfjoin`` can be used to join PDF documents. It supports a simple
3 ``droplet`` mode. It will join all files passed as argument into a new
4 file.
5
6 ``pdfjoin`` has three modes of operation:
7
8 1) With no output path given: The droplet mode.
9
10    If no output path is passed to ``pdfjoin``, will look for a file
11    matching ``pdfjoin-*.pdf`` in the current directory, which has been
12    modified within the last 60 minutes. (More precise, the filename
13    must match the scheme as described in the next paragraph.)q If such
14    a file exists, all documents passed as arguments will be joined to
15    this one.
16
17    If such a file does not exist, it will be created first. The
18    filename will be ``pdfjoin-yyyddmm-hhmm.pdf`` with ``yyyddmm``
19    being the current date and ``hhmm`` being the current time.
20
21    This allows dropping one file after each other onto the droplet and
22    join them into the same output file -- assuming you are not waiting
23    more then 60 Minutes between each drop.
24
25 2) With an existing directory name is given as output path
26
27    This case works exactly like the droplet mode, except that the file
28    is searched for and created in the given directory.
29
30 3) With any other path given as output path:
31
32    In this case the given path is the filename searched for and
33    created if not existing yet.
34
35 """
36
37 from setuptools import setup, find_packages
38 additional_keywords ={}
39
40 from distutils.core import Command
41 from distutils import log
42 import os
43
44 class build_docs(Command):
45     description = "build documentation from rst-files"
46     user_options=[]
47
48     def initialize_options (self): pass
49     def finalize_options (self):
50         self.docpages = DOCPAGES
51         
52     def run(self):
53         substitutions = ('.. |VERSION| replace:: '
54                          + self.distribution.get_version())
55         for writer, rstfilename, outfilename in self.docpages:
56             distutils.dir_util.mkpath(os.path.dirname(outfilename))
57             log.info("creating %s page %s", writer, outfilename)
58             if not self.dry_run:
59                 try:
60                     rsttext = open(rstfilename).read()
61                 except IOError, e:
62                     sys.exit(e)
63                 rsttext = '\n'.join((substitutions, rsttext))
64                 # docutils.core does not offer easy reading from a
65                 # string into a file, so we need to do it ourself :-(
66                 doc = docutils.core.publish_string(source=rsttext,
67                                                    source_path=rstfilename,
68                                                    writer_name=writer)
69                 try:
70                     rsttext = open(outfilename, 'w').write(doc)
71                 except IOError, e:
72                     sys.exit(e)
73
74 cmdclass = {}
75
76 try:
77     import docutils.core
78     import docutils.io
79     import docutils.writers.manpage
80     import distutils.command.build
81     distutils.command.build.build.sub_commands.append(('build_docs', None))
82     cmdclass['build_docs'] = build_docs
83 except ImportError:
84     log.warn("docutils not installed, can not build man pages. "
85              "Using pre-build ones.")
86
87 DOCPAGES = (
88     ('manpage', 'pdfjoin.rst', 'doc/pdfjoin.1'),
89     ('html', 'pdfjoin.rst', 'doc/pdfjoin.html'),
90     )
91
92
93 setup(
94     cmdclass=cmdclass,
95     name = "pdftools.pdfjoin",
96     version = "0.1dev",
97     install_requires = ['pyPdf>1.10'],
98
99     packages=find_packages(exclude=['ez_setup']),
100     namespace_packages=['pdftools'],
101
102     package_data = {
103         # If any package contains *.txt or *.rst files, include them:
104         '': ['*.txt', '*.rst'],
105         # And include any *.msg files found in the 'hello' package, too:
106         'hello': ['*.msg'],
107         },
108
109     # metadata for upload to PyPI
110     author = "Hartmut Goebel",
111     author_email = "h.goebel@goebel-consult.de",
112     description = "Join PDF documents into a single document.",
113     long_description = __doc__,
114     license = "GPL 3.0",
115     keywords = "pdf join",
116     #url          = "http://pdfposter.origo.ethz.ch/",
117     #download_url = "http://pdfposter.origo.ethz.ch/download",
118     classifiers = [
119     'Development Status :: 3 - Alpha', 
120     'Environment :: Console',
121     'Intended Audience :: Developers',
122     'Intended Audience :: End Users/Desktop',
123     'Intended Audience :: System Administrators',
124     'License :: OSI Approved :: GNU General Public License (GPL)',
125     'Natural Language :: English',
126     'Operating System :: OS Independent',
127     'Programming Language :: Python',
128     'Topic :: Printing',
129     'Topic :: Utilities',
130     ],
131
132     # these are for easy_install (used by bdist_*)
133     zip_safe = True,
134     entry_points = {
135         "console_scripts": [
136             "pdfjoin = pdftools.pdfjoin.cmd:run",
137         ],
138     },
139     **additional_keywords
140 )