From 9494321c91be51b0646b3eb7f7c22c443fef5c02 Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Sat, 29 Sep 2012 12:31:30 +0200 Subject: [PATCH] Use a Python script to generate requireall.js This is needed to work around platform variations in the sort command. --- Makefile | 4 ++-- bin/generate-requireall | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) create mode 100755 bin/generate-requireall diff --git a/Makefile b/Makefile index 68f9762a1c..672cf31ba6 100644 --- a/Makefile +++ b/Makefile @@ -36,9 +36,9 @@ build/src/external/externs/types.js: bin/generate-src src/ol/literals.txt mkdir -p $(dir $@) bin/generate-src --externs src/ol/literals.txt >$@ -build/src/internal/src/requireall.js: $(SRC) +build/src/internal/src/requireall.js: bin/generate-requireall $(SRC) mkdir -p $(dir $@) - ( echo "goog.require('goog.dom');" ; find src/ol -name \*.js | xargs grep -rh ^goog.provide | sort | uniq | sed -e 's/provide/require/g' ) >$@ + bin/generate-requireall --require=goog.dom src/ol >$@ build/src/internal/src/types.js: bin/generate-src src/ol/literals.txt mkdir -p $(dir $@) diff --git a/bin/generate-requireall b/bin/generate-requireall new file mode 100755 index 0000000000..aa921f451d --- /dev/null +++ b/bin/generate-requireall @@ -0,0 +1,32 @@ +#!/usr/bin/env python + +from optparse import OptionParser +import os +import os.path +import re +import sys + + +def main(argv): + + option_parser = OptionParser() + option_parser.add_option('--require', action='append') + options, args = option_parser.parse_args(argv[1:]) + + requires = set(options.require or ()) + for arg in args: + for dirpath, dirnames, filenames in os.walk(arg): + for filename in filenames: + if not filename.endswith('.js'): + continue + for line in open(os.path.join(dirpath, filename)): + m = re.match(r'goog\.provide\(\'(.*)\'\);', line) + if m: + requires.add(m.group(1)) + + for require in sorted(requires): + sys.stdout.write('goog.require(\'%s\');\n' % (require,)) + + +if __name__ == '__main__': + sys.exit(main(sys.argv))