diff options
Diffstat (limited to 'deno2/js/pbjs_hack.py')
-rwxr-xr-x | deno2/js/pbjs_hack.py | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/deno2/js/pbjs_hack.py b/deno2/js/pbjs_hack.py new file mode 100755 index 000000000..f0cfa01a5 --- /dev/null +++ b/deno2/js/pbjs_hack.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python +""" +gn can only run python scripts. +protobuf.js must generate some javascript files. +it's very difficult to get this into the gn build sanely. +therefore we write them into the source directory. +""" +import subprocess +import sys +import os + +js_path = os.path.dirname(os.path.realpath(__file__)) +bin_path = os.path.join(js_path, "node_modules", ".bin") +pbjs_bin = os.path.join(bin_path, "pbjs") +pbts_bin = os.path.join(bin_path, "pbts") +msg_pbjs_out = os.path.join(js_path, "msg.pb.js") +msg_pbts_out = os.path.join(js_path, "msg.pb.d.ts") +assert os.path.exists(pbjs_bin) +assert os.path.exists(pbts_bin) + +proto_in = sys.argv[1] +stamp_file = sys.argv[2] + +def touch(fname): + if os.path.exists(fname): + os.utime(fname, None) + else: + open(fname, 'a').close() + +subprocess.check_call([ + "node", + pbjs_bin, + "--target=static-module", + "--wraper=commonjs", + "--out=" + msg_pbjs_out, + proto_in +]) +assert os.path.exists(msg_pbjs_out) + +subprocess.check_call([ + "node", + pbts_bin, + "--out=" + msg_pbts_out, + msg_pbjs_out +]) +assert os.path.exists(msg_pbts_out) + + +touch(stamp_file) |