diff options
author | iimarckus <iimarckus@gmail.com> | 2013-12-09 21:23:19 -0800 |
---|---|---|
committer | iimarckus <iimarckus@gmail.com> | 2013-12-09 21:23:19 -0800 |
commit | f17320d7a835709da4c991e0e67300d001ffc53c (patch) | |
tree | 9dc5044efa04fd16baf25c0ca0c43a68409dee61 /prequeue.py | |
parent | 2ed422c6960cf0ec57c3a336b092c2af06bbc1e8 (diff) | |
parent | 1953e89b86572fec2e0628ddee029833c253eca9 (diff) |
Merge pull request #19 from yenatch/crystal-makefile
bring pokered into this century
Diffstat (limited to 'prequeue.py')
-rw-r--r-- | prequeue.py | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/prequeue.py b/prequeue.py new file mode 100644 index 00000000..d9b37e03 --- /dev/null +++ b/prequeue.py @@ -0,0 +1,40 @@ +# coding: utf-8 +""" +Starting a new python process to preprocess each source file creates too much +overhead. Instead, a list of files to preprocess is fed into a script run from +a single process. +""" + +import os +import sys + +import preprocessor + +def preprocess_queue(filenames=sys.argv[1:]): + + stdin = sys.stdin + stdout = sys.stdout + + processor = preprocessor.setup_processor() + + for source in filenames: + dest = os.path.splitext(source)[0] + '.tx' + sys.stdin = open(source, 'r') + sys.stdout = open(dest, 'w') + processor.preprocess() + + processor.update_globals() + + sys.stdin = stdin + sys.stdout = stdout + +def main(): + filenames = list(set(sys.argv[1:])) + if filenames: + num_files = len(filenames) + s = '' if num_files == 1 else 's' + sys.stdout.write('Preprocessing {0} file{1}...\n'.format(num_files, s)) + preprocess_queue(filenames) + +if __name__ == '__main__': + main() |