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)
|
APPNAME = re.search(r'__appname__\s+=\s+[\'"]([^\'"]+)[\'"]', src).group(1)
|
||||||
print 'Setup', APPNAME, 'version:', VERSION
|
print 'Setup', APPNAME, 'version:', VERSION
|
||||||
|
|
||||||
entry_points = {
|
epsrc = re.compile(r'entry_points = (\{.*?\})', re.DOTALL).search(open('src/libprs500/linux.py', 'rb').read()).group(1)
|
||||||
'console_scripts': [ \
|
entry_points = eval(epsrc, {'__appname__': APPNAME})
|
||||||
'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',
|
|
||||||
],
|
|
||||||
}
|
|
||||||
|
|
||||||
if 'win32' in sys.platform.lower() or 'win64' in sys.platform.lower():
|
if 'win32' in sys.platform.lower() or 'win64' in sys.platform.lower():
|
||||||
entry_points['console_scripts'].append('parallel = libprs500.parallel:main')
|
entry_points['console_scripts'].append('parallel = libprs500.parallel:main')
|
||||||
|
@ -23,7 +23,7 @@ from optparse import OptionParser
|
|||||||
|
|
||||||
from libprs500 import __version__, iswindows
|
from libprs500 import __version__, iswindows
|
||||||
from libprs500.devices.errors import PathError
|
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.errors import ArgumentError, DeviceError, DeviceLocked
|
||||||
from libprs500.devices import devices
|
from libprs500.devices import devices
|
||||||
from libprs500.devices.scanner import DeviceScanner
|
from libprs500.devices.scanner import DeviceScanner
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
import sys, logging, os
|
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 import ConversionError
|
||||||
from libprs500.ebooks.lrf.meta import get_metadata
|
from libprs500.ebooks.lrf.meta import get_metadata
|
||||||
from libprs500.ebooks.lrf.parser import LRFDocument
|
from libprs500.ebooks.lrf.parser import LRFDocument
|
||||||
@ -91,9 +91,7 @@ class LRFConverter(object):
|
|||||||
self.create_block_styles()
|
self.create_block_styles()
|
||||||
|
|
||||||
def option_parser():
|
def option_parser():
|
||||||
from optparse import OptionParser
|
parser = OptionParser(usage='%prog book.lrf')
|
||||||
parser = OptionParser(usage='%prog book.lrf', epilog='Created by '+__author__,
|
|
||||||
version=__appname__ + ' ' + __version__)
|
|
||||||
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('--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')
|
parser.add_option('--verbose', default=False, action='store_true', dest='verbose')
|
||||||
return parser
|
return parser
|
||||||
|
@ -18,7 +18,7 @@ Compile a LRS file into a LRF file.
|
|||||||
|
|
||||||
import sys, os, logging
|
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, \
|
from libprs500.ebooks.BeautifulSoup import BeautifulStoneSoup, NavigableString, \
|
||||||
CData, Tag
|
CData, Tag
|
||||||
from libprs500.ebooks.lrf.pylrs.pylrs import Book, PageStyle, TextStyle, \
|
from libprs500.ebooks.lrf.pylrs.pylrs import Book, PageStyle, TextStyle, \
|
||||||
@ -263,10 +263,7 @@ class LrsParser(object):
|
|||||||
|
|
||||||
|
|
||||||
def option_parser():
|
def option_parser():
|
||||||
from optparse import OptionParser
|
parser = OptionParser(usage='%prog [options] file.lrs\nCompile an LRS file into an LRF file.')
|
||||||
parser = OptionParser(usage='%prog [options] file.lrs',
|
|
||||||
version=__appname__+ ' ' + __version__,
|
|
||||||
epilog='Created by '+__author__)
|
|
||||||
parser.add_option('-o', '--output', default=None, help='Path to output file')
|
parser.add_option('-o', '--output', default=None, help='Path to output file')
|
||||||
parser.add_option('--verbose', default=False, action='store_true',
|
parser.add_option('--verbose', default=False, action='store_true',
|
||||||
help='Verbose processing')
|
help='Verbose processing')
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
import sys, array, os, re, codecs, logging
|
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.meta import LRFMetaFile
|
||||||
from libprs500.ebooks.lrf.objects import get_object, PageTree, StyleObject, \
|
from libprs500.ebooks.lrf.objects import get_object, PageTree, StyleObject, \
|
||||||
Font, Text, TOCObject, BookAttr, ruby_tags
|
Font, Text, TOCObject, BookAttr, ruby_tags
|
||||||
@ -141,9 +141,7 @@ class LRFDocument(LRFMetaFile):
|
|||||||
return '<BBeBXylog version="1.0">\n' + bookinfo + pages + styles + objects + '</BBeBXylog>'
|
return '<BBeBXylog version="1.0">\n' + bookinfo + pages + styles + objects + '</BBeBXylog>'
|
||||||
|
|
||||||
def option_parser():
|
def option_parser():
|
||||||
from optparse import OptionParser
|
parser = OptionParser(usage='%prog book.lrf\nConvert an LRF file into an LRS (XML UTF-8 encoded) file')
|
||||||
parser = OptionParser(usage='%prog book.lrf', epilog='Created by '+__author__,
|
|
||||||
version=__appname__ + ' ' + __version__)
|
|
||||||
parser.add_option('--output', '-o', default=None, help='Output LRS file', dest='out')
|
parser.add_option('--output', '-o', default=None, help='Output LRS file', dest='out')
|
||||||
parser.add_option('--verbose', default=False, action='store_true', dest='verbose')
|
parser.add_option('--verbose', default=False, action='store_true', dest='verbose')
|
||||||
return parser
|
return parser
|
||||||
|
@ -19,13 +19,13 @@ the L{libprs500.lrf.meta} module.
|
|||||||
__docformat__ = "epytext"
|
__docformat__ = "epytext"
|
||||||
__author__ = "Kovid Goyal <kovid@kovidgoyal.net>"
|
__author__ = "Kovid Goyal <kovid@kovidgoyal.net>"
|
||||||
|
|
||||||
from optparse import OptionParser
|
|
||||||
from libprs500 import __version__ as VERSION
|
from libprs500 import __version__ as VERSION
|
||||||
|
from libprs500 import OptionParser
|
||||||
|
|
||||||
def get_parser(extension):
|
def get_parser(extension):
|
||||||
''' Return an option parser with the basic metadata options already setup'''
|
''' Return an option parser with the basic metadata options already setup'''
|
||||||
parser = OptionParser(version='libprs500 version: '+VERSION,
|
parser = OptionParser(usage='%prog [options] myfile.'+extension+'\n\nRead and write metadata from an ebook file.')
|
||||||
usage='''%prog [options] myfile.'''+extension)
|
|
||||||
parser.add_option("-t", "--title", action="store", type="string", \
|
parser.add_option("-t", "--title", action="store", type="string", \
|
||||||
dest="title", help="Set the book title", default=None)
|
dest="title", help="Set the book title", default=None)
|
||||||
parser.add_option("-a", "--authors", action="store", type="string", \
|
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
|
import sys, logging, re, socket
|
||||||
from urllib import urlopen, quote
|
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.metadata import MetaInformation
|
||||||
from libprs500.ebooks.BeautifulSoup import BeautifulStoneSoup
|
from libprs500.ebooks.BeautifulSoup import BeautifulStoneSoup
|
||||||
|
|
||||||
@ -98,8 +97,7 @@ def build_combined(base_url, opts):
|
|||||||
|
|
||||||
|
|
||||||
def option_parser():
|
def option_parser():
|
||||||
parser = OptionParser(epilog='Created by '+__author__, version=__appname__+' '+__version__,
|
parser = OptionParser(usage=\
|
||||||
usage=\
|
|
||||||
'''
|
'''
|
||||||
%prog [options] key
|
%prog [options] key
|
||||||
|
|
||||||
|
@ -17,9 +17,8 @@ Fetch cover from LibraryThing.com based on ISBN number.
|
|||||||
'''
|
'''
|
||||||
|
|
||||||
import sys, socket, os
|
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
|
from libprs500.ebooks.BeautifulSoup import BeautifulSoup
|
||||||
browser = None
|
browser = None
|
||||||
|
|
||||||
@ -68,9 +67,7 @@ def cover_from_isbn(isbn, timeout=5.):
|
|||||||
socket.setdefaulttimeout(_timeout)
|
socket.setdefaulttimeout(_timeout)
|
||||||
|
|
||||||
def option_parser():
|
def option_parser():
|
||||||
parser = OptionParser(epilog='Created by '+__author__,
|
parser = OptionParser(usage=\
|
||||||
version=__appname__+' '+__version__,
|
|
||||||
usage=\
|
|
||||||
'''
|
'''
|
||||||
%prog [options] ISBN
|
%prog [options] ISBN
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.Warning
|
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.Warning
|
||||||
import shutil
|
import shutil
|
||||||
''' Post installation script for linux '''
|
''' Post installation script for linux '''
|
||||||
import sys, os
|
import sys, os, re
|
||||||
|
|
||||||
from subprocess import check_call
|
from subprocess import check_call
|
||||||
from libprs500 import __version__, __appname__
|
from libprs500 import __version__, __appname__
|
||||||
@ -27,6 +27,41 @@ DESTDIR = ''
|
|||||||
if os.environ.has_key('DESTDIR'):
|
if os.environ.has_key('DESTDIR'):
|
||||||
DESTDIR = os.environ['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):
|
def options(option_parser):
|
||||||
parser = option_parser()
|
parser = option_parser()
|
||||||
options = parser.option_list
|
options = parser.option_list
|
||||||
@ -79,14 +114,14 @@ complete -o filenames -F _'''%(opts,exts) + name + ' ' + name +"\n\n"
|
|||||||
|
|
||||||
use_destdir = False
|
use_destdir = False
|
||||||
|
|
||||||
def open_file(path):
|
def open_file(path, mode='wb'):
|
||||||
if use_destdir:
|
if use_destdir:
|
||||||
if os.path.isabs(path):
|
if os.path.isabs(path):
|
||||||
path = path[1:]
|
path = path[1:]
|
||||||
path = os.path.join(DESTDIR, path)
|
path = os.path.join(DESTDIR, path)
|
||||||
if not os.path.exists(os.path.dirname(path)):
|
if not os.path.exists(os.path.dirname(path)):
|
||||||
os.makedirs(os.path.dirname(path))
|
os.makedirs(os.path.dirname(path))
|
||||||
return open(path, 'wb')
|
return open(path, mode)
|
||||||
|
|
||||||
def setup_completion(fatal_errors):
|
def setup_completion(fatal_errors):
|
||||||
try:
|
try:
|
||||||
@ -269,6 +304,32 @@ def option_parser():
|
|||||||
dest='fatal_errors', help='If set die on errors.')
|
dest='fatal_errors', help='If set die on errors.')
|
||||||
return parser
|
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():
|
def post_install():
|
||||||
parser = option_parser()
|
parser = option_parser()
|
||||||
opts = parser.parse_args()[0]
|
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_udev_rules(opts.group_file, not opts.dont_reload, opts.fatal_errors)
|
||||||
setup_completion(opts.fatal_errors)
|
setup_completion(opts.fatal_errors)
|
||||||
setup_desktop_integration(opts.fatal_errors)
|
setup_desktop_integration(opts.fatal_errors)
|
||||||
|
install_man_pages(opts.fatal_errors)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from PyQt4 import Qt
|
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
|
import sys, socket, os, urlparse, codecs, logging, re, time, copy, urllib2
|
||||||
from urllib import url2pathname
|
from urllib import url2pathname
|
||||||
from httplib import responses
|
from httplib import responses
|
||||||
from optparse import OptionParser
|
|
||||||
|
|
||||||
from libprs500 import __version__, __appname__, __author__, setup_cli_handlers, \
|
from libprs500 import setup_cli_handlers, browser, sanitize_file_name, OptionParser
|
||||||
browser, sanitize_file_name
|
|
||||||
from libprs500.ebooks.BeautifulSoup import BeautifulSoup
|
from libprs500.ebooks.BeautifulSoup import BeautifulSoup
|
||||||
from libprs500.ebooks.chardet import xml_to_unicode
|
from libprs500.ebooks.chardet import xml_to_unicode
|
||||||
|
|
||||||
@ -296,8 +294,7 @@ class RecursiveFetcher(object):
|
|||||||
socket.setdefaulttimeout(self.default_timeout)
|
socket.setdefaulttimeout(self.default_timeout)
|
||||||
|
|
||||||
def option_parser(usage='%prog URL\n\nWhere URL is for example http://google.com'):
|
def option_parser(usage='%prog URL\n\nWhere URL is for example http://google.com'):
|
||||||
parser = OptionParser(usage=usage, version=__appname__+' '+__version__,
|
parser = OptionParser(usage=usage)
|
||||||
epilog='Created by ' + __author__)
|
|
||||||
parser.add_option('-d', '--base-dir', help='Base directory into which URL is saved. Default is %default',
|
parser.add_option('-d', '--base-dir', help='Base directory into which URL is saved. Default is %default',
|
||||||
default='.', type='string', dest='dir')
|
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',
|
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