]> git.donarmstrong.com Git - lilypond.git/blobdiff - bin/make-website.py
patch::: 0.1.48: Re: lily 0.1.59
[lilypond.git] / bin / make-website.py
index 8effeebe407a3e045599235e96ab6806b4bf012d..a2243a78f913e0e884e98bfa06cdcf80e1f8c7ca 100644 (file)
@@ -4,14 +4,23 @@
 # 
 # source file of the GNU LilyPond music typesetter
 # 
-# (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+# (c) 1997, 1998 Han-Wen Nienhuys <hanwen@stack.nl>
 # 
 
 """ 
  stupid script to generate WWW site.  
 
  The WWW site is my test-suite for LilyPond, I usually don't
- distribute versions that fail to complete this script """
+ distribute versions that fail to complete this script 
+
+You should set the following environment vars:
+
+LILYPOND_SOURCEDIR
+TEXINPUTS
+MAILADDRESS
+
+
+ """
 
 import sys
 import os
@@ -19,8 +28,10 @@ import os
 lilypath =''
 try:
     lilypath = os.environ['LILYPOND_SOURCEDIR'] + '/'
-except IndexError:
-    lilypath = os.environ['HOME'] + 'musix/current'
+except KeyError:
+    print 'Please set LILYPOND_SOURCEDIR to the toplevel source, eg LILYPOND_SOURCEDIR=/home/foobar/lilypond-1.2.3/'
+    sys.exit(1)
+
 lilypath = lilypath + '/bin/'
 sys.path.append(lilypath)
  
@@ -30,7 +41,7 @@ import glob
 
 depth = ''
 makewebsite_id = "<!make_website!>";
-id_str = "make-website 0.7";
+id_str = "make-website 0.8";
 tar = "tar";
 make = "make";
 mailaddress = "unknown"
@@ -38,10 +49,14 @@ fullname = "unknown"
 footstr = ""
 lilyversion= ''
 
+include_path=[ 'input', 'mutopia' , 'mutopia/J.S.Bach', 
+              'mutopia/J.S.Bach/out' ]
+
 def set_vars():
     __main__.lilyversion =  version_tuple_to_str(lilydirs.version_tuple())
     os.environ["TEXINPUTS"] = os.environ["TEXINPUTS"] + ":%s/input/:" % depth;
-    os.environ["LILYINCLUDE"] = "%s/input/" % depth;
+    
+    os.environ["LILYINCLUDE"] = join (':', __main__.include_path)
     os.environ["LILYTOP"] = depth;
     __main__.mailaddress= os.environ['MAILADDRESS']
     pw = pwd.getpwuid (os.getuid());
@@ -52,7 +67,7 @@ backstr = '\n<hr>Please take me <a href=%s>back to the index</a>\n\
 of LilyPond -- The GNU Project Music typesetter\n\
 <hr><font size=-1>\n\
 This page was built using <code>%s</code> from lilypond-%s by <p>\n\
-<address><br>%s <a href=mailto:%s&>>&lt<!bla>%s</a>&gt</address>\n\
+<address><br>%s <a href=mailto:%s>&lt<!bla>%s</a>&gt</address>\n\
 <p></font>' 
 
     
@@ -80,15 +95,8 @@ def my_system(cmds):
 base="lilypond/";
 
 examples=["twinkle-pop", 
-         "wtk1-fugue2",
-         "standchen-16", 
-         "standchen-20", 
-         "standje",
-         "wtk1-prelude1",
-         "toccata-fuga-E", 
-         "scsii-menuetto",
+         "praeludium-fuga-E", 
          "cadenza", 
-         "gallina",
          "twinkle", 
          "collisions",
          "font16",
@@ -97,44 +105,42 @@ examples=["twinkle-pop",
          "rhythm", 
          "multi"]
 
+mutopia_examples = [ "wtk1-fugue2",
+                    "standje",
+                    "preludes-1",
+                    "preludes-2",
+                    "wtk1-prelude1",
+                    "gallina",   
+                    "scsii-menuetto"]
+
+
 def gen_html():
     print 'generating HTML'
     my_system (["make -kC .. html"]);
     
 
-def gen_examples():
+def gen_examples(inputs):
     print 'generating examples:\n'
-    list = map(lambda x: 'out/%s.ps.gz out/%s.gif out/%s.ly.txt' % (x,x,x), examples)
+    outputs = []
+    for i in inputs:
+       try:
+               located = multiple_find ([i + '.ly'], include_path) [0]
+       except IndexError:
+               print 'continuing dazed & confused (%s) ' % i
+               continue
+       outputs.append (located)
+       if not file_exist_b(i + '.dvi'):
+           my_system (['ly2dvi %s' % located])
+       if not file_exist_b(i + '.ly.txt'):
+           os.link (located, i + ".ly.txt")
+    list = map(lambda x: 'out/%s.ps.gz out/%s.gif' % (x,x), inputs)
     my_system (['make -C .. ' + join(' ', list)])
 
-texstuff = ["mudela-man", "mudela-course"]
-
-def gen_manuals():
-    print 'generating TeX doco manuals'
-    list = open('tex_manuals.html', 'w')
-    list.write( "<HTML><TITLE>PostScript Manuals</TITLE>\n" 
-     "<BODY><h1>LilyPond manuals (in PostScript)</h1>"
-     "<ul>\n")
-    todo='' 
-    for stuff in texstuff:
-       todo = todo + ' out/' + stuff + '.ps.gz'
-       list.write("<li><a href=%s.ps.gz>%s.ps.gz</a>" % (stuff, stuff))
-    list.write('</ul></BODY></HTML>')
-    list.close ()
-
-    my_system (['make -C .. ' + todo])
-
-def file_exist_b(name):
-    try: 
-       f = open(name)
-    except IOError:
-       return 0
-    f.close ()
-    return 1
+    return outputs
 
-def gen_list():
-    print "generating HTML list\n";
-    list = open('example_output.html', 'w')
+def gen_list(inputs, filename):
+    print "generating HTML list %s\n" % filename;
+    list = open(filename, 'w')
     list.write ('<html><TITLE>Rendered Examples</TITLE>\n'
      '<body>These example files are taken from the LilyPond distribution.\n'
      'LilyPond currently only outputs TeX and MIDI. The pictures and\n'
@@ -142,8 +148,10 @@ def gen_list():
      'graphics tools.  The papersize used for these examples is A4.  The GIF\n'
      'files have been scaled to eliminate aliasing.\n');
 
-    for ex in examples:
+    for ex in inputs:
+       print '%s, ' % ex
        header  = read_mudela_header(ex + '.ly.txt')
+       
        def read_dict(s, default, h =header):
                try:
                    ret = h[s]
@@ -177,6 +185,30 @@ def gen_list():
     list.write( "</BODY></HTML>");
     list.close()
 
+texstuff = ["mudela-man", "mudela-course"]
+
+def gen_manuals():
+    print 'generating TeX doco manuals'
+    list = open('tex_manuals.html', 'w')
+    list.write( "<HTML><TITLE>PostScript Manuals</TITLE>\n" 
+     "<BODY><h1>LilyPond manuals (in PostScript)</h1>"
+     "<ul>\n")
+    todo='' 
+    for stuff in texstuff:
+       todo = todo + ' out/' + stuff + '.ps.gz'
+       list.write("<li><a href=%s.ps.gz>%s.ps.gz</a>" % (stuff, stuff))
+    list.write('</ul></BODY></HTML>')
+    list.close ()
+
+    my_system (['make -C .. ' + todo])
+
+def file_exist_b(name):
+    try: 
+       f = open(name)
+    except IOError:
+       return 0
+    f.close ()
+    return 1
 def copy_files():
     print "copying files\n"
     
@@ -246,19 +278,26 @@ def edit_html():
        s = regsub.sub ('</BODY>', footstr('index.html') + makewebsite_id + '</BODY>', s)
        s = regsub.sub('<TITLE>\(.*\)</TITLE>$', 
                       '<TITLE>LilyPond WWW: \\1</TITLE>', s)
+
        dump_file (f,s)
 
+
+def do_examples (examples, filename):
+    located_files = gen_examples (examples)
+    gen_list (examples, filename)
 def main():
     identify();
 
     os.chdir (lilydirs.topdir + 'Documentation/out')
     __main__.depth = "../../";
+    __main__.include_path = map(lambda p: __main__.depth + '/' + 
+                               p, __main__.include_path)
 
     set_vars();
     gen_html();
     copy_files();
-    gen_examples();
-    gen_list();
+    do_examples (examples, 'examples_output.html');
+    do_examples (mutopia_examples, 'mutopiaexamples_output.html');
     gen_manuals();
     #set_images();
     edit_html();