mirror of https://github.com/python/cpython
40 lines
1.1 KiB
Python
40 lines
1.1 KiB
Python
|
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
|
||
|
|