root/gaphor/tags/gaphor-0.12.5/utils/command/build_uml.py

Revision 2135, 1.9 kB (checked in by arj..@yirdis.nl, 1 year ago)

Attempt to fix issue [81].

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1 #!/usr/bin/env python
2 """
3 This file provides the code generator which transforms gaphor/UML/uml2.gaphor
4 into gaphor/UML/uml2.py.
5
6 Also a distutils tool, build_uml, is provided.
7 """
8
9 import os.path
10 from distutils.core import Command
11 from distutils.util import byte_compile
12 from distutils.dep_util import newer
13
14
15 class build_uml(Command):
16
17     description = "Generate gaphor/UML/uml2.py."
18
19     user_options = [
20         ('build-lib=','b', "build directory (where to install from)"),
21         ('force', 'f', "force installation (overwrite existing files)"),
22         ]
23
24     boolean_options = [ 'force' ]
25
26     def initialize_options(self):
27         #self.build_lib = None
28         self.force = 0
29         self.data_dir = None
30
31     def finalize_options(self):
32             self.set_undefined_options('build',
33                                        #('build_lib', 'build_lib'),
34                                        ('force', 'force'))
35
36     def run(self):
37         import sys
38         #sys.path.insert(0, self.build_lib)
39         self.generate_uml2()
40
41     def generate_uml2(self):
42         """
43         Generate gaphor/UML/uml2.py in the build directory.
44         """
45         gen = os.path.join('utils', 'command', 'gen_uml.py')
46         overrides = os.path.join('gaphor', 'UML', 'uml2.override')
47         model = os.path.join('gaphor', 'UML', 'uml2.gaphor')
48         py_model = os.path.join('gaphor', 'UML', 'uml2.py')
49         outfile = py_model #os.path.join(self.build_lib, py_model)
50         self.mkpath(os.path.dirname(outfile))
51         if self.force or newer(model, outfile) \
52                       or newer(overrides, outfile) \
53                       or newer(gen, outfile):
54             print 'generating %s from %s...' % (py_model, model)
55             print '  (warnings can be ignored)'
56             import gen_uml
57             gen_uml.generate(model, outfile, overrides)
58         else:
59             print 'not generating %s (up-to-date)' % py_model
60         byte_compile([outfile])
61
62
63 # vim:sw=4:et
Note: See TracBrowser for help on using the browser.