aboutsummaryrefslogtreecommitdiff
path: root/tools/js2c.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/js2c.py')
-rwxr-xr-xtools/js2c.py18
1 files changed, 17 insertions, 1 deletions
diff --git a/tools/js2c.py b/tools/js2c.py
index 249df58085..40f2bc6f48 100755
--- a/tools/js2c.py
+++ b/tools/js2c.py
@@ -35,6 +35,7 @@ import os
import re
import sys
import string
+import hashlib
def ToCArray(elements, step=10):
@@ -205,6 +206,10 @@ void DefineJavaScript(Environment* env, v8::Local<v8::Object> target) {{
{initializers}
}}
+void DefineJavaScriptHash(Environment* env, v8::Local<v8::Object> target) {{
+ {hash_initializers}
+}}
+
}} // namespace node
"""
@@ -240,6 +245,12 @@ CHECK(target->Set(env->context(),
{value}.ToStringChecked(env->isolate())).FromJust());
"""
+HASH_INITIALIZER = """\
+CHECK(target->Set(env->context(),
+ FIXED_ONE_BYTE_STRING(env->isolate(), "{key}"),
+ FIXED_ONE_BYTE_STRING(env->isolate(), "{value}")).FromJust());
+"""
+
DEPRECATED_DEPS = """\
'use strict';
process.emitWarning(
@@ -280,6 +291,7 @@ def JS2C(source, target):
# Build source code lines
definitions = []
initializers = []
+ hash_initializers = [];
for name in modules:
lines = ReadFile(str(name))
@@ -309,10 +321,12 @@ def JS2C(source, target):
var = name.replace('-', '_').replace('/', '_')
key = '%s_key' % var
value = '%s_value' % var
+ hash_value = hashlib.sha256(lines).hexdigest()
definitions.append(Render(key, name))
definitions.append(Render(value, lines))
initializers.append(INITIALIZER.format(key=key, value=value))
+ hash_initializers.append(HASH_INITIALIZER.format(key=name, value=hash_value))
if deprecated_deps is not None:
name = '/'.join(deprecated_deps)
@@ -324,11 +338,13 @@ def JS2C(source, target):
definitions.append(Render(key, name))
definitions.append(Render(value, DEPRECATED_DEPS.format(module=name)))
initializers.append(INITIALIZER.format(key=key, value=value))
+ hash_initializers.append(HASH_INITIALIZER.format(key=name, value=hash_value))
# Emit result
output = open(str(target[0]), "w")
output.write(TEMPLATE.format(definitions=''.join(definitions),
- initializers=''.join(initializers)))
+ initializers=''.join(initializers),
+ hash_initializers=''.join(hash_initializers)))
output.close()
def main():