4 # The regular expression for freeze directives. These are comments with the
5 # word macfreeze immedeately followed by a colon, followed by a directive,
6 # followed by argument(s)
8 # The directives supported are
9 # include - Include a module or file
10 # exclude - Exclude a module
11 # optional - Include a module if it is found, but don't complain if it isn't
12 # path - Add sys.path entries. Relative paths are relative to the source file.
14 # See the macfreeze.py main program for a real live example.
16 DIRECTIVE_RE
=r
'^\s*#\s*macfreeze:\s*(\S*)\s*(.*)\s*$'
17 REPROG
=re
.compile(DIRECTIVE_RE
)
19 def findfreezedirectives(program
):
24 progdir
, filename
= os
.path
.split(program
)
26 for line
in fp
.readlines():
27 match
= REPROG
.match(line
)
29 directive
= match
.group(1)
30 argument
= match
.group(2)
31 if directive
== 'include':
32 extra_modules
.append(argument
)
33 elif directive
== 'exclude':
34 exclude_modules
.append(argument
)
35 elif directive
== 'optional':
36 optional_modules
.append(argument
)
37 elif directive
== 'path':
38 argument
= os
.path
.join(progdir
, argument
)
39 extra_path
.append(argument
)
41 print '** Unknown directive', line
42 return extra_modules
, exclude_modules
, optional_modules
, extra_path