| import re |
| import os |
| |
| # The regular expression for freeze directives. These are comments with the |
| # word macfreeze immedeately followed by a colon, followed by a directive, |
| # followed by argument(s) |
| # |
| # The directives supported are |
| # include - Include a module or file |
| # exclude - Exclude a module |
| # path - Add sys.path entries. Relative paths are relative to the source file. |
| # |
| # See the macfreeze.py main program for a real live example. |
| # |
| DIRECTIVE_RE=r'^\s*#\s*macfreeze:\s*(\S*)\s*(.*)\s*$' |
| REPROG=re.compile(DIRECTIVE_RE) |
| |
| def findfreezedirectives(program): |
| extra_modules = [] |
| exclude_modules = [] |
| extra_path = [] |
| progdir, filename = os.path.split(program) |
| fp = open(program) |
| for line in fp.readlines(): |
| match = REPROG.match(line) |
| if match: |
| directive = match.group(1) |
| argument = match.group(2) |
| if directive == 'include': |
| extra_modules.append(argument) |
| elif directive == 'exclude': |
| exclude_modules.append(argument) |
| elif directive == 'path': |
| argument = os.path.join(progdir, argument) |
| extra_path.append(argument) |
| else: |
| print '** Unknown directive', line |
| return extra_modules, exclude_modules, extra_path |
| |