diff nt/installer/Wise/pre_wise.py @ 398:74fd4e045ea6 r21-2-29

Import from CVS: tag r21-2-29
author cvs
date Mon, 13 Aug 2007 11:13:30 +0200
parents
children a268de273009
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nt/installer/Wise/pre_wise.py	Mon Aug 13 11:13:30 2007 +0200
@@ -0,0 +1,133 @@
+import string
+import re
+import os
+import types
+
+infile=open("xemacs.tmpl","r")
+
+import version
+import dirs
+import filelist
+import packages
+
+def letter(package):
+    index = packages.all.index(package)
+    if index>29:
+	raise "WISE error: too many components"
+    return chr(ord("A")+index)
+
+def letters(package_list):
+    ret = ""
+    for p in package_list: 
+	ret = ret+letter(p)
+    return ret
+
+def describe(package):
+    if package in packages.descriptions.keys():
+	return ": "+packages.descriptions[package]
+    else: return ""
+
+def ifblock(var,val):
+    return("item: If/While Statement\n  Variable=%s\n  Value=%s\n  Flags=00001010\nend\n" % (var,val))
+
+def endblock():
+    return("item: End Block\nend\n")
+
+def setvar(var,val):
+    return("item: Set Variable\n  Variable=%s\n  Value=%s\n  Flags=10000000\nend\n" % (string.upper(var), val))
+
+def default_letters_of_category(cat):
+    val = ""
+    for p in packages.default:
+        if packages.category_of_package(p) == cat:
+            val = val + packages.letter_of_package(p)
+    return val
+
+def set_category_defaults():
+    ret = ""
+    for c in packages.category_names:
+        ret = ret +  setvar(c, default_letters_of_category(c))
+    return ret
+
+def do_category(cat):
+    ret = ifblock("COMPONENTS", packages.letter_of_category(cat))
+    for pkg in packages.packages_of_category(cat):
+        ret = ret + ifblock(string.upper(cat),packages.letter_of_package(pkg))
+        for f in files_of_package(pkg):
+            ret = ret+install_pkg_file(f)
+        ret = ret + endblock()
+    ret = ret + endblock()
+    return ret
+
+def files_of_package(package):
+    manifest_file = dirs.packages + "\\pkginfo\\MANIFEST." + package
+    manifest = open(manifest_file,"r")
+    lines = manifest.readlines()
+    lines = map(lambda s:s[:-1], lines)
+    lines = map(lambda s:string.replace(s,'/','\\'), lines)
+    return lines
+
+def category_dialog(cat):
+    npkg = len(packages.packages_of_category(cat))
+    ret=""
+    ret=ret+"  item: Dialog\n    Title="+packages.category_descriptions[cat]+" Packages\n"
+    ret=ret+"    Width=210\n"
+    ret=ret+"    Height=%d\n" % (45+npkg*10)
+    ret=ret+"    Font Name=Helv\n"
+    ret=ret+"    Font Size=8\n"
+    ret=ret+"    item: Push Button\n"
+    ret=ret+"      Rectangle=107 %d 147 %d\n" % (5+npkg*10+2, 5+npkg*10+17)
+    ret=ret+"      Create Flags=01010000000000010000000000000001\n"
+    ret=ret+"      Text=OK\n"
+    ret=ret+"    end\n"
+    ret=ret+"    item: Push Button\n"
+    ret=ret+"      Rectangle=153 %d 193 %d\n" % (5+npkg*10+2, 5+npkg*10+17)
+    ret=ret+"      Variable=%s\n" % string.upper(cat)
+    ret=ret+"      Value=%%%s_SAVE%%\n" % string.upper(cat)
+    ret=ret+"      Create Flags=01010000000000010000000000000000\n"
+    ret=ret+"      Flags=0000000000000001\n"
+    ret=ret+"      Text=Cancel\n"
+    ret=ret+"    end\n"
+    ret=ret+"    item: Checkbox\n"
+    ret=ret+"      Rectangle=0 5 191 %d\n" % (10*npkg)
+    ret=ret+"      Variable=%s\n"%string.upper(cat)
+    ret=ret+"      Create Flags=01010000000000010000000000000011\n"
+    ret=ret+"      Flags=0000000000000010\n"
+    for pkg in packages.packages_of_category(cat):
+        ret = ret+"      Text=%s: %s\n"%( pkg, packages.package_descriptions[pkg])
+    ret=ret+"      Text=\n"
+    ret=ret+"    end\n"
+    ret=ret+"  end\n"
+    return ret
+
+def src_path(src,name):
+    return src + "\\" + name
+
+def dst_path(dst,name):
+    return "%MAINDIR%"+"\\"+dst+"\\" + name
+
+def install_file(name,src,dst):
+    return("item: Install File\n  Source=%s\n  Destination=%s\n  Flags=0000000010000010\nend\n" % (src_path(src,name),dst_path(dst,name)))
+
+def install_pkg_file(name):
+    return install_file(name,dirs.packages,dirs.pkg_dst)
+
+def do_package(package):
+    return ifblock("COMPONENTS",letter(package)) + \
+	   string.join(map(install_pkg_file,files(package)),"")+ \
+	   endblock()
+
+for line in infile.readlines():
+    left=string.find(line,"<<<")
+    if left>=0:
+	right=string.find(line,">>>")
+	expr=line[left+3:right]
+	val=eval(expr)
+	if type(val)==types.StringType:
+	    print line[:left] + val + line[right+3:],
+	elif type(val)==types.ListType:
+	    for v in val:
+		print line[:left] + v + line[right+3:],
+    else: print line,
+
+