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 @@ 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')

View File

@ -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

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 @@ 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

View File

@ -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')

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 @@ 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

View File

@ -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", \

View File

@ -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

View File

@ -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

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 @@ 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

View File

@ -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',