diff options
Diffstat (limited to 'tools/js2c.py')
-rwxr-xr-x | tools/js2c.py | 18 |
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(): |