X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=buildscripts%2Fmutopia-index.py;h=8b02ea4ba2416294c71d63d694a216329c06047e;hb=ee968fb42f641b0d10059cd46ed7dc79f53ce5b1;hp=ca23fe6452fb6b521f61b0e8669bd6e9ec835d4a;hpb=314032dc07a92715d54ffa16285483c9939ac3e4;p=lilypond.git diff --git a/buildscripts/mutopia-index.py b/buildscripts/mutopia-index.py index ca23fe6452..8b02ea4ba2 100644 --- a/buildscripts/mutopia-index.py +++ b/buildscripts/mutopia-index.py @@ -1,68 +1,38 @@ #!@PYTHON@ # mutopia-index.py -name = 'mutopia-index' - import fnmatch +import getopt import os - -_debug = 0 - -_prune = ['(*)'] - -def find(pattern, dir = os.curdir): - list = [] - names = os.listdir(dir) - names.sort() - for name in names: - if name in (os.curdir, os.pardir): - continue - fullname = os.path.join(dir, name) - if fnmatch.fnmatch(name, pattern): - list.append(fullname) - if os.path.isdir(fullname) and not os.path.islink(fullname): - for p in _prune: - if fnmatch.fnmatch(name, p): - if _debug: print "skip", `fullname` - break - else: - if _debug: print "descend into", `fullname` - list = list + find(pattern, fullname) - return list - - -import re import os -import sys +import re import stat +import sys -def gulp_file (fn): - try: - f = open (fn) - except: - raise 'not there' , fn - return f.read () +def find (pat, dir): + f = os.popen ('find %s -name "%s"'% (dir, pat)) + lst = [] + for a in f.readlines(): + a = a[:-1] + lst.append (a) + return lst -def file_exist_b (fn): - try: - f = open (fn) - return 1 - except: - return 0 +junk_prefix = 'out-www/' headertext= r""" -

You're looking at a page with some LilyPond samples. -These files are also included in the distribution. The output is -completely generated by LilyPond, without any touch up by humans. -

The PostScript files were generated using TeX and dvips at 600 dpi. -The pictures are 90 dpi anti-aliased snapshots of the printed output. -The images are in PNG format, and should be viewable with any current -browser. +

LilyPond samples

+ + +

You're looking at a page with some LilyPond samples. These files +are also included in the distribution. The output is completely +generated from the source file, without any further touch up. + +

-

If you want a better impression of the appearance, do print out one of -the postscript files. +The pictures are 90 dpi anti-aliased snapshots of the printed output. +For a good impression of the quality print out the PDF file. """ headertext_nopics= r""" @@ -73,20 +43,20 @@ headertext_nopics= r""" # FIXME breaks on multiple strings. # def read_lilypond_header (fn): - s = open(fn).read () - s = re.sub('%.*$', '', s) - s = re.sub('\n', ' ', s) + s = open (fn).read () + s = re.sub ('%.*$', '', s) + s = re.sub ('\n', ' ', s) dict = {} m = re.search (r"""\\header\s*{([^}]*)}""", s) if m: - s = m.group(1) + s = m.group (1) else: return dict while s: - m = re.search (r"""\s*(\S+)\s*=\s*([^;]+)\s*;""", s) + m = re.search (r'''\s*(\S+)\s*=\s*"([^"]+)"''', s) if m == None: s = '' else: @@ -101,99 +71,118 @@ def read_lilypond_header (fn): return dict def help (): - sys.stdout.write (r"""Usage: mutopia-index [options] INFILE OUTFILE -Generate index for mutopia\n + sys.stdout.write (r'''Usage: mutopia-index [OPTIONS] INFILE OUTFILE +Generate index for mutopia. + Options: -h, --help print this help - -o,-output=FILE write output to file. + -o, --output=FILE write output to file -s, --subdirs=DIR add subdir - --suffix=SUF specify suffix""" - ) + --suffix=SUF specify suffix + +''') sys.exit (0) # ugh. -def gen_list(inputs, filename): - print "generating HTML list %s\n" % filename - if filename: - list = open(filename, 'w') +def gen_list (inputs, file_name): + sys.stderr.write ("generating HTML list %s" % file_name) + sys.stderr.write ('\n') + if file_name: + list = open (file_name, 'w') else: list = sys.stdout - list.write ('Rendered Examples\n') + list.write ('''Rendered Examples + + +''') + list.write ('\n') if inputs: - list.write (headertext) + list.write (headertext) else: - list.write (headertext_nopics) - + list.write (headertext_nopics) for ex in inputs: + print ex + (base, ext) = os.path.splitext (ex) (base, ext2) = os.path.splitext (base) ext = ext2 + ext - print '%s, ' % ex - header = read_lilypond_header(ex) - - def read_dict(s, default, h =header): + header = read_lilypond_header (ex) + def read_dict (s, default, h = header): try: ret = h[s] except KeyError: ret = default return ret - head = read_dict('title', os.path.basename (base)) - composer = read_dict('composer', '') - desc = read_dict('description', '') - list.write('


\n') - list.write('

%s

\n' % head); + head = read_dict ('title', os.path.basename (base)) + composer = read_dict ('composer', '') + desc = read_dict ('description', '') + list.write ('
\n') + list.write ('

%s

\n' % head); if composer: - list.write('

%s

\n' % composer) + list.write ('

%s

\n' % composer) if desc: - list.write('%s

' % desc) + list.write ('%s

' % desc) list.write ('

\n"); + pages_found += 1 + list_item (f, 'See a picture of page %d' % page, 'png') - list.write('\n'); - list.close() + if pages_found == 0 and os.path.exists (base + '.png'): + list_item (base + ".png", + 'See a picture', 'png') -import getopt + + list_item (base + '.pdf', 'Print', 'PDF') + list_item (base + '.midi', 'Listen', 'MIDI') + list.write ('\n'); + + list.write ('\n'); + list.close () -(options, files) = getopt.getopt(sys.argv[1:], +(options, files) = getopt.getopt (sys.argv[1:], 'ho:', ['help', 'output=']) outfile = 'examples.html' -subdirs =[] +subdirs = [] for opt in options: o = opt[0] a = opt[1] if o == '--help' or o == '-h': - help() + help () elif o == '--output' or o == '-o': outfile = a @@ -209,7 +198,5 @@ allfiles = [] for d in dirs: allfiles = allfiles + find ('*.ly.txt', d) -print allfiles - gen_list (allfiles, outfile)