mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Install MAN pages on linux
This commit is contained in:
parent
1f4a0833c7
commit
baded2c885
35
setup.py
35
setup.py
@ -20,39 +20,8 @@ VERSION = re.search(r'__version__\s+=\s+[\'"]([^\'"]+)[\'"]', src).group(1)
|
||||
APPNAME = re.search(r'__appname__\s+=\s+[\'"]([^\'"]+)[\'"]', src).group(1)
|
||||
print 'Setup', APPNAME, 'version:', VERSION
|
||||
|
||||
entry_points = {
|
||||
'console_scripts': [ \
|
||||
'prs500 = libprs500.devices.prs500.cli.main:main',
|
||||
'lrf-meta = libprs500.ebooks.lrf.meta:main',
|
||||
'rtf-meta = libprs500.ebooks.metadata.rtf:main',
|
||||
'pdf-meta = libprs500.ebooks.metadata.pdf:main',
|
||||
'lit-meta = libprs500.ebooks.metadata.lit:main',
|
||||
'opf-meta = libprs500.ebooks.metadata.opf:main',
|
||||
'epub-meta = libprs500.ebooks.metadata.epub:main',
|
||||
'txt2lrf = libprs500.ebooks.lrf.txt.convert_from:main',
|
||||
'html2lrf = libprs500.ebooks.lrf.html.convert_from:main',
|
||||
'markdown-libprs500 = libprs500.ebooks.markdown.markdown:main',
|
||||
'lit2lrf = libprs500.ebooks.lrf.lit.convert_from:main',
|
||||
'epub2lrf = libprs500.ebooks.lrf.epub.convert_from:main',
|
||||
'rtf2lrf = libprs500.ebooks.lrf.rtf.convert_from:main',
|
||||
'web2disk = libprs500.web.fetch.simple:main',
|
||||
'web2lrf = libprs500.ebooks.lrf.web.convert_from:main',
|
||||
'pdf2lrf = libprs500.ebooks.lrf.pdf.convert_from:main',
|
||||
'mobi2lrf = libprs500.ebooks.lrf.mobi.convert_from:main',
|
||||
'any2lrf = libprs500.ebooks.lrf.any.convert_from:main',
|
||||
'lrf2lrs = libprs500.ebooks.lrf.parser:main',
|
||||
'lrs2lrf = libprs500.ebooks.lrf.lrs.convert_from:main',
|
||||
'pdfreflow = libprs500.ebooks.lrf.pdf.reflow:main',
|
||||
'isbndb = libprs500.ebooks.metadata.isbndb:main',
|
||||
'librarything = libprs500.ebooks.metadata.library_thing:main',
|
||||
'mobi2oeb = libprs500.ebooks.mobi.reader:main',
|
||||
'lrf2html = libprs500.ebooks.lrf.html.convert_to:main',
|
||||
],
|
||||
'gui_scripts' : [
|
||||
APPNAME+' = libprs500.gui2.main:main',
|
||||
'lrfviewer = libprs500.gui2.lrf_renderer.main:main',
|
||||
],
|
||||
}
|
||||
epsrc = re.compile(r'entry_points = (\{.*?\})', re.DOTALL).search(open('src/libprs500/linux.py', 'rb').read()).group(1)
|
||||
entry_points = eval(epsrc, {'__appname__': APPNAME})
|
||||
|
||||
if 'win32' in sys.platform.lower() or 'win64' in sys.platform.lower():
|
||||
entry_points['console_scripts'].append('parallel = libprs500.parallel:main')
|
||||
|
@ -23,7 +23,7 @@ from optparse import OptionParser
|
||||
|
||||
from libprs500 import __version__, iswindows
|
||||
from libprs500.devices.errors import PathError
|
||||
from libprs500.devices.prs500.cli.terminfo import TerminalController
|
||||
from libprs500.terminfo import TerminalController
|
||||
from libprs500.devices.errors import ArgumentError, DeviceError, DeviceLocked
|
||||
from libprs500.devices import devices
|
||||
from libprs500.devices.scanner import DeviceScanner
|
||||
|
@ -14,7 +14,7 @@
|
||||
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
import sys, logging, os
|
||||
|
||||
from libprs500 import __appname__, __author__, __version__, setup_cli_handlers
|
||||
from libprs500 import setup_cli_handlers, OptionParser
|
||||
from libprs500.ebooks import ConversionError
|
||||
from libprs500.ebooks.lrf.meta import get_metadata
|
||||
from libprs500.ebooks.lrf.parser import LRFDocument
|
||||
@ -91,9 +91,7 @@ class LRFConverter(object):
|
||||
self.create_block_styles()
|
||||
|
||||
def option_parser():
|
||||
from optparse import OptionParser
|
||||
parser = OptionParser(usage='%prog book.lrf', epilog='Created by '+__author__,
|
||||
version=__appname__ + ' ' + __version__)
|
||||
parser = OptionParser(usage='%prog book.lrf')
|
||||
parser.add_option('--output-dir', '-o', default=None, help='Output directory in which to store created HTML files. If it does not exist, it is created. By default the current directory is used.', dest='out')
|
||||
parser.add_option('--verbose', default=False, action='store_true', dest='verbose')
|
||||
return parser
|
||||
|
@ -18,7 +18,7 @@ Compile a LRS file into a LRF file.
|
||||
|
||||
import sys, os, logging
|
||||
|
||||
from libprs500 import __author__, __appname__, __version__, setup_cli_handlers
|
||||
from libprs500 import OptionParser, setup_cli_handlers
|
||||
from libprs500.ebooks.BeautifulSoup import BeautifulStoneSoup, NavigableString, \
|
||||
CData, Tag
|
||||
from libprs500.ebooks.lrf.pylrs.pylrs import Book, PageStyle, TextStyle, \
|
||||
@ -263,10 +263,7 @@ class LrsParser(object):
|
||||
|
||||
|
||||
def option_parser():
|
||||
from optparse import OptionParser
|
||||
parser = OptionParser(usage='%prog [options] file.lrs',
|
||||
version=__appname__+ ' ' + __version__,
|
||||
epilog='Created by '+__author__)
|
||||
parser = OptionParser(usage='%prog [options] file.lrs\nCompile an LRS file into an LRF file.')
|
||||
parser.add_option('-o', '--output', default=None, help='Path to output file')
|
||||
parser.add_option('--verbose', default=False, action='store_true',
|
||||
help='Verbose processing')
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
import sys, array, os, re, codecs, logging
|
||||
|
||||
from libprs500 import __author__, __appname__, __version__, setup_cli_handlers
|
||||
from libprs500 import OptionParser, setup_cli_handlers
|
||||
from libprs500.ebooks.lrf.meta import LRFMetaFile
|
||||
from libprs500.ebooks.lrf.objects import get_object, PageTree, StyleObject, \
|
||||
Font, Text, TOCObject, BookAttr, ruby_tags
|
||||
@ -141,9 +141,7 @@ class LRFDocument(LRFMetaFile):
|
||||
return '<BBeBXylog version="1.0">\n' + bookinfo + pages + styles + objects + '</BBeBXylog>'
|
||||
|
||||
def option_parser():
|
||||
from optparse import OptionParser
|
||||
parser = OptionParser(usage='%prog book.lrf', epilog='Created by '+__author__,
|
||||
version=__appname__ + ' ' + __version__)
|
||||
parser = OptionParser(usage='%prog book.lrf\nConvert an LRF file into an LRS (XML UTF-8 encoded) file')
|
||||
parser.add_option('--output', '-o', default=None, help='Output LRS file', dest='out')
|
||||
parser.add_option('--verbose', default=False, action='store_true', dest='verbose')
|
||||
return parser
|
||||
|
@ -19,13 +19,13 @@ the L{libprs500.lrf.meta} module.
|
||||
__docformat__ = "epytext"
|
||||
__author__ = "Kovid Goyal <kovid@kovidgoyal.net>"
|
||||
|
||||
from optparse import OptionParser
|
||||
|
||||
from libprs500 import __version__ as VERSION
|
||||
from libprs500 import OptionParser
|
||||
|
||||
def get_parser(extension):
|
||||
''' Return an option parser with the basic metadata options already setup'''
|
||||
parser = OptionParser(version='libprs500 version: '+VERSION,
|
||||
usage='''%prog [options] myfile.'''+extension)
|
||||
parser = OptionParser(usage='%prog [options] myfile.'+extension+'\n\nRead and write metadata from an ebook file.')
|
||||
parser.add_option("-t", "--title", action="store", type="string", \
|
||||
dest="title", help="Set the book title", default=None)
|
||||
parser.add_option("-a", "--authors", action="store", type="string", \
|
||||
|
@ -18,9 +18,8 @@ Interface to isbndb.com. My key HLLXQX2A.
|
||||
|
||||
import sys, logging, re, socket
|
||||
from urllib import urlopen, quote
|
||||
from optparse import OptionParser
|
||||
|
||||
from libprs500 import __appname__, __version__, __author__, setup_cli_handlers
|
||||
from libprs500 import setup_cli_handlers, OptionParser
|
||||
from libprs500.ebooks.metadata import MetaInformation
|
||||
from libprs500.ebooks.BeautifulSoup import BeautifulStoneSoup
|
||||
|
||||
@ -98,8 +97,7 @@ def build_combined(base_url, opts):
|
||||
|
||||
|
||||
def option_parser():
|
||||
parser = OptionParser(epilog='Created by '+__author__, version=__appname__+' '+__version__,
|
||||
usage=\
|
||||
parser = OptionParser(usage=\
|
||||
'''
|
||||
%prog [options] key
|
||||
|
||||
|
@ -17,9 +17,8 @@ Fetch cover from LibraryThing.com based on ISBN number.
|
||||
'''
|
||||
|
||||
import sys, socket, os
|
||||
from optparse import OptionParser
|
||||
|
||||
from libprs500 import browser as _browser, __author__, __appname__, __version__
|
||||
from libprs500 import browser as _browser, OptionParser
|
||||
from libprs500.ebooks.BeautifulSoup import BeautifulSoup
|
||||
browser = None
|
||||
|
||||
@ -68,9 +67,7 @@ def cover_from_isbn(isbn, timeout=5.):
|
||||
socket.setdefaulttimeout(_timeout)
|
||||
|
||||
def option_parser():
|
||||
parser = OptionParser(epilog='Created by '+__author__,
|
||||
version=__appname__+' '+__version__,
|
||||
usage=\
|
||||
parser = OptionParser(usage=\
|
||||
'''
|
||||
%prog [options] ISBN
|
||||
|
||||
|
@ -14,7 +14,7 @@
|
||||
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.Warning
|
||||
import shutil
|
||||
''' Post installation script for linux '''
|
||||
import sys, os
|
||||
import sys, os, re
|
||||
|
||||
from subprocess import check_call
|
||||
from libprs500 import __version__, __appname__
|
||||
@ -27,6 +27,41 @@ DESTDIR = ''
|
||||
if os.environ.has_key('DESTDIR'):
|
||||
DESTDIR = os.environ['DESTDIR']
|
||||
|
||||
entry_points = {
|
||||
'console_scripts': [ \
|
||||
'prs500 = libprs500.devices.prs500.cli.main:main',
|
||||
'lrf-meta = libprs500.ebooks.lrf.meta:main',
|
||||
'rtf-meta = libprs500.ebooks.metadata.rtf:main',
|
||||
'pdf-meta = libprs500.ebooks.metadata.pdf:main',
|
||||
'lit-meta = libprs500.ebooks.metadata.lit:main',
|
||||
'opf-meta = libprs500.ebooks.metadata.opf:main',
|
||||
'epub-meta = libprs500.ebooks.metadata.epub:main',
|
||||
'txt2lrf = libprs500.ebooks.lrf.txt.convert_from:main',
|
||||
'html2lrf = libprs500.ebooks.lrf.html.convert_from:main',
|
||||
'markdown-libprs500 = libprs500.ebooks.markdown.markdown:main',
|
||||
'lit2lrf = libprs500.ebooks.lrf.lit.convert_from:main',
|
||||
'epub2lrf = libprs500.ebooks.lrf.epub.convert_from:main',
|
||||
'rtf2lrf = libprs500.ebooks.lrf.rtf.convert_from:main',
|
||||
'web2disk = libprs500.web.fetch.simple:main',
|
||||
'web2lrf = libprs500.ebooks.lrf.web.convert_from:main',
|
||||
'pdf2lrf = libprs500.ebooks.lrf.pdf.convert_from:main',
|
||||
'mobi2lrf = libprs500.ebooks.lrf.mobi.convert_from:main',
|
||||
'any2lrf = libprs500.ebooks.lrf.any.convert_from:main',
|
||||
'lrf2lrs = libprs500.ebooks.lrf.parser:main',
|
||||
'lrs2lrf = libprs500.ebooks.lrf.lrs.convert_from:main',
|
||||
'pdfreflow = libprs500.ebooks.lrf.pdf.reflow:main',
|
||||
'isbndb = libprs500.ebooks.metadata.isbndb:main',
|
||||
'librarything = libprs500.ebooks.metadata.library_thing:main',
|
||||
'mobi2oeb = libprs500.ebooks.mobi.reader:main',
|
||||
'lrf2html = libprs500.ebooks.lrf.html.convert_to:main',
|
||||
],
|
||||
'gui_scripts' : [
|
||||
__appname__+' = libprs500.gui2.main:main',
|
||||
'lrfviewer = libprs500.gui2.lrf_renderer.main:main',
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
def options(option_parser):
|
||||
parser = option_parser()
|
||||
options = parser.option_list
|
||||
@ -79,14 +114,14 @@ complete -o filenames -F _'''%(opts,exts) + name + ' ' + name +"\n\n"
|
||||
|
||||
use_destdir = False
|
||||
|
||||
def open_file(path):
|
||||
def open_file(path, mode='wb'):
|
||||
if use_destdir:
|
||||
if os.path.isabs(path):
|
||||
path = path[1:]
|
||||
path = os.path.join(DESTDIR, path)
|
||||
if not os.path.exists(os.path.dirname(path)):
|
||||
os.makedirs(os.path.dirname(path))
|
||||
return open(path, 'wb')
|
||||
if not os.path.exists(os.path.dirname(path)):
|
||||
os.makedirs(os.path.dirname(path))
|
||||
return open(path, mode)
|
||||
|
||||
def setup_completion(fatal_errors):
|
||||
try:
|
||||
@ -269,6 +304,32 @@ def option_parser():
|
||||
dest='fatal_errors', help='If set die on errors.')
|
||||
return parser
|
||||
|
||||
def install_man_pages(fatal_errors):
|
||||
from bz2 import compress
|
||||
import subprocess
|
||||
print 'Installing MAN pages...'
|
||||
manpath = '/usr/share/man/man1'
|
||||
f = open_file('/tmp/man_extra', 'wb')
|
||||
f.write('[see also]\nhttp://%s.kovidgoyal.net\n'%__appname__)
|
||||
f.close()
|
||||
for src in entry_points['console_scripts']:
|
||||
prog = src[:src.index('=')].strip()
|
||||
if prog in ('prs500', 'pdf-meta', 'epub-meta', 'lit-meta', 'markdown-libprs500'):
|
||||
continue
|
||||
help2man = ('help2man', prog, '--name', 'part of %s'%__appname__,
|
||||
'--section', '1', '--no-info', '--include',
|
||||
f.name, '--manual', __appname__)
|
||||
manfile = os.path.join(manpath, prog+'.1'+__appname__+'.bz2')
|
||||
p = subprocess.Popen(help2man, stdout=subprocess.PIPE)
|
||||
raw = re.compile(r'^\.IP\s*^([A-Z :]+)$', re.MULTILINE).sub(r'.SS\n\1', p.stdout.read())
|
||||
if not raw.strip():
|
||||
print 'Unable to create MAN page for', prog
|
||||
continue
|
||||
open_file(manfile).write(compress(raw))
|
||||
|
||||
|
||||
|
||||
|
||||
def post_install():
|
||||
parser = option_parser()
|
||||
opts = parser.parse_args()[0]
|
||||
@ -283,6 +344,7 @@ def post_install():
|
||||
setup_udev_rules(opts.group_file, not opts.dont_reload, opts.fatal_errors)
|
||||
setup_completion(opts.fatal_errors)
|
||||
setup_desktop_integration(opts.fatal_errors)
|
||||
install_man_pages(opts.fatal_errors)
|
||||
|
||||
try:
|
||||
from PyQt4 import Qt
|
||||
|
@ -18,10 +18,8 @@ Fetch a webpage and its links recursively.
|
||||
import sys, socket, os, urlparse, codecs, logging, re, time, copy, urllib2
|
||||
from urllib import url2pathname
|
||||
from httplib import responses
|
||||
from optparse import OptionParser
|
||||
|
||||
from libprs500 import __version__, __appname__, __author__, setup_cli_handlers, \
|
||||
browser, sanitize_file_name
|
||||
from libprs500 import setup_cli_handlers, browser, sanitize_file_name, OptionParser
|
||||
from libprs500.ebooks.BeautifulSoup import BeautifulSoup
|
||||
from libprs500.ebooks.chardet import xml_to_unicode
|
||||
|
||||
@ -296,8 +294,7 @@ class RecursiveFetcher(object):
|
||||
socket.setdefaulttimeout(self.default_timeout)
|
||||
|
||||
def option_parser(usage='%prog URL\n\nWhere URL is for example http://google.com'):
|
||||
parser = OptionParser(usage=usage, version=__appname__+' '+__version__,
|
||||
epilog='Created by ' + __author__)
|
||||
parser = OptionParser(usage=usage)
|
||||
parser.add_option('-d', '--base-dir', help='Base directory into which URL is saved. Default is %default',
|
||||
default='.', type='string', dest='dir')
|
||||
parser.add_option('-t', '--timeout', help='Timeout in seconds to wait for a response from the server. Default: %default s',
|
||||
|
Loading…
x
Reference in New Issue
Block a user