[Mobies-commit] [commit] r3675 - UDM/trunk/src/UdmCliGen
ksmyth at redhat1.isis.vanderbilt.edu
ksmyth at redhat1.isis.vanderbilt.edu
Fri Mar 25 11:58:38 CDT 2011
Author: ksmyth
Date: Fri Mar 25 11:58:37 2011
New Revision: 3675
Log:
Add -o option. Load Cheetah from UDM_3RD_PARTY. Compile Cheetah templates and include in py2exe.
Modified:
UDM/trunk/src/UdmCliGen/UdmCliGen-setup.py
UDM/trunk/src/UdmCliGen/UdmCliGen.py
Modified: UDM/trunk/src/UdmCliGen/UdmCliGen-setup.py
==============================================================================
--- UDM/trunk/src/UdmCliGen/UdmCliGen-setup.py Thu Mar 24 14:10:14 2011 (r3674)
+++ UDM/trunk/src/UdmCliGen/UdmCliGen-setup.py Fri Mar 25 11:58:37 2011 (r3675)
@@ -4,6 +4,16 @@
from distutils.core import setup
import py2exe
import time
+import sys
+import os
+
+import UdmCliGen # for Cheetah in sys.path
+
+templates = ['Interface', 'Implementation', 'Initialize']
+if __name__ == '__main__':
+ from Cheetah.CheetahWrapper import CheetahWrapper
+ for template in templates:
+ CheetahWrapper().main([sys.argv[0], 'compile', template + '.tmpl'])
class Target:
def __init__(self, **kw):
@@ -18,7 +28,7 @@
options={"py2exe":{
"dll_excludes": ['w9xpopen.exe'],
#"bundle_files": 1,
- "includes": ["Cheetah.DummyTransaction"],
+ "includes": ["Cheetah.DummyTransaction"] + templates,
}
},
)
Modified: UDM/trunk/src/UdmCliGen/UdmCliGen.py
==============================================================================
--- UDM/trunk/src/UdmCliGen/UdmCliGen.py Thu Mar 24 14:10:14 2011 (r3674)
+++ UDM/trunk/src/UdmCliGen/UdmCliGen.py Fri Mar 25 11:58:37 2011 (r3675)
@@ -1,5 +1,3 @@
-from Cheetah.Template import Template
-
import sys
import os
import os.path
@@ -7,23 +5,29 @@
import udm
import common
+if os.environ.has_key("UDM_3RDPARTY_PATH"):
+ sys.path.append(os.path.join(os.environ["UDM_3RDPARTY_PATH"], r"Cheetah-2.4.4\build\lib.win32-2.6"))
+
+from Cheetah.Template import Template
+
+def get_template(name, **kwargs):
+ if hasattr(sys, "frozen"): #i.e. .exe generated by py2exe
+ __import__(name)
+ return getattr(sys.modules[name], name)(**kwargs)
+ else:
+ return Template(file=name+'.tmpl', **kwargs)
+
if __name__ == "__main__":
from optparse import OptionParser
parser = OptionParser(usage="usage: %prog [options] input-uml.xml")
- parser.add_option("-o", "--output", dest="output")
+ parser.add_option("-o", "--output", dest="output", help="File or directory to output to.")
parser.add_option("--impl_namespace", dest="impl_namespace")
parser.add_option("--interface_namespace", dest="interface_namespace")
(options, args) = parser.parse_args()
if len(args) != 1:
print parser.print_help()
sys.exit()
- if options.output:
- output = open(options.output, "w")
- # TODO: close this
- else:
- output = sys.stdout
- output.write("#pragma warning disable 0108\n");
if options.impl_namespace:
common.impl_namespace = options.impl_namespace + "."
if options.interface_namespace:
@@ -33,25 +37,38 @@
dn = udm.SmartDataNetwork(udm.uml_diagram())
dn.open(args[0], "")
- classes = []
- classes.extend(dn.root.children(child_type=uml.Class))
- import collections
- q = collections.deque()
- q.extend(dn.root.children(child_type=uml.Namespace))
- while q:
- namespace = q.pop()
- q.extend(namespace.children(child_type=uml.Namespace))
- classes.extend(namespace.children(child_type=uml.Class))
+ if options.output:
+ if os.path.isdir(options.output):
+ output = open(os.path.join(options.output, dn.root.name + ".cs"), "w")
+ else:
+ output = open(options.output, "w")
+ # TODO: close this
+ else:
+ output = sys.stdout
+
+ output.write("#pragma warning disable 0108\n"); # disable "'member1' hides inherited member 'member2'. Use the new keyword if hiding was intended."
+
+ def get_classes(dn):
+ classes = []
+ classes.extend(dn.root.children(child_type=uml.Class))
+ import collections
+ q = collections.deque()
+ q.extend(dn.root.children(child_type=uml.Namespace))
+ while q:
+ namespace = q.pop()
+ q.extend(namespace.children(child_type=uml.Namespace))
+ classes.extend(namespace.children(child_type=uml.Class))
+ return classes
- for child in classes:
+ for child in get_classes(dn):
searchList = {'c': child, 'namespace': common.interface_namespace + common.get_path(child.parent), 'uml': uml, 'diagram_name': dn.root.name}
- t = Template(file="Interface.tmpl", searchList=[searchList])
+ t = get_template("Interface", searchList=[searchList])
output.write(str(t))
searchList = {'c': child, 'namespace': common.impl_namespace + common.get_path(child.parent), 'uml': uml, 'diagram_name': dn.root.name}
- t = Template(file="Implementation.tmpl", searchList=[searchList])
+ t = get_template("Implementation", searchList=[searchList])
output.write(str(t))
searchList = {'root': dn.root}
- t = Template(file="Initialize.tmpl", searchList=[searchList])
+ t = get_template("Initialize", searchList=[searchList])
output.write(str(t))
More information about the Mobies-commit
mailing list