summaryrefslogtreecommitdiff
path: root/site_scons
diff options
context:
space:
mode:
Diffstat (limited to 'site_scons')
-rw-r--r--site_scons/site_tools/jsheader.py42
-rw-r--r--site_scons/site_tools/jstoh.py55
2 files changed, 57 insertions, 40 deletions
diff --git a/site_scons/site_tools/jsheader.py b/site_scons/site_tools/jsheader.py
index 813928bf14e..284ed239d5a 100644
--- a/site_scons/site_tools/jsheader.py
+++ b/site_scons/site_tools/jsheader.py
@@ -1,48 +1,10 @@
import os
+from jstoh import jsToHeader
from SCons.Builder import Builder
def jsToH(target, source, env):
-
- outFile = str( target[0] )
-
- h = ['#include "mongo/base/string_data.h"'
- ,'namespace mongo {'
- ,'struct JSFile{ const char* name; const StringData& source; };'
- ,'namespace JSFiles{'
- ]
-
- def cppEscape(s):
- s = s.rstrip()
- s = s.replace( '\\', '\\\\' )
- s = s.replace( '"', r'\"' )
- return s
-
- for s in source:
- filename = str(s)
- objname = os.path.split(filename)[1].split('.')[0]
- stringname = '_jscode_raw_' + objname
-
- h.append('const StringData ' + stringname + " = ")
-
- for l in open( filename, 'r' ):
- h.append( '"' + cppEscape(l) + r'\n" ' )
-
- h.append(";")
- h.append('extern const JSFile %s;'%objname) #symbols aren't exported w/o this
- h.append('const JSFile %s = { "%s", %s };'%(objname, filename.replace('\\', '/'), stringname))
-
- h.append("} // namespace JSFiles")
- h.append("} // namespace mongo")
- h.append("")
-
- text = '\n'.join(h);
-
- out = open( outFile, 'wb' )
- try:
- out.write( text )
- finally:
- out.close()
+ jsToHeader(str(target[0]), source)
jshBuilder = Builder( action=jsToH )
diff --git a/site_scons/site_tools/jstoh.py b/site_scons/site_tools/jstoh.py
new file mode 100644
index 00000000000..5ae9471f108
--- /dev/null
+++ b/site_scons/site_tools/jstoh.py
@@ -0,0 +1,55 @@
+import os
+import sys
+
+def jsToHeader(target, source):
+
+ outFile = target
+
+ h = ['#include "mongo/base/string_data.h"'
+ ,'namespace mongo {'
+ ,'struct JSFile{ const char* name; const StringData& source; };'
+ ,'namespace JSFiles{'
+ ]
+
+ def cppEscape(s):
+ s = s.rstrip()
+ s = s.replace( '\\', '\\\\' )
+ s = s.replace( '"', r'\"' )
+ return s
+
+ for s in source:
+ filename = str(s)
+ objname = os.path.split(filename)[1].split('.')[0]
+ stringname = '_jscode_raw_' + objname
+
+ h.append('const StringData ' + stringname + " = ")
+
+ for l in open( filename, 'r' ):
+ h.append( '"' + cppEscape(l) + r'\n" ' )
+
+ h.append(";")
+ h.append('extern const JSFile %s;'%objname) #symbols aren't exported w/o this
+ h.append('const JSFile %s = { "%s", %s };'%(objname, filename.replace('\\', '/'), stringname))
+
+ h.append("} // namespace JSFiles")
+ h.append("} // namespace mongo")
+ h.append("")
+
+ text = '\n'.join(h);
+
+ print "writing: %s" % outFile
+ out = open( outFile, 'wb' )
+ try:
+ out.write( text )
+ finally:
+ out.close()
+
+
+if __name__ == "__main__":
+ if len(sys.argv) < 3:
+ print "Must specify [target] [source] "
+ sys.exit(1);
+
+ jsToHeader(sys.argv[1], sys.argv[2:])
+
+