Install MAN pages on linux

This commit is contained in:
Kovid Goyal 2008-02-25 21:26:13 +00:00
parent 1f4a0833c7
commit baded2c885
11 changed files with 85 additions and 69 deletions

View file

@ -20,39 +20,8 @@
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')

View file

@ -23,7 +23,7 @@
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

View file

@ -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 @@ def create_styles(self):
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

View file

@ -18,7 +18,7 @@
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 @@ def render(self, file, to_lrs=False):
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')

View file

@ -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 @@ def to_xml(self):
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

View file

@ -19,13 +19,13 @@
__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", \

View file

@ -18,9 +18,8 @@
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

View file

@ -17,9 +17,8 @@
'''
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

View file

@ -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 @@
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 @@ def opts_and_exts(name, op, exts):
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

View file

@ -18,10 +18,8 @@
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 @@ def __del__(self):
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',