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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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