summaryrefslogtreecommitdiff
path: root/deno2/js/pbjs_hack.py
diff options
context:
space:
mode:
Diffstat (limited to 'deno2/js/pbjs_hack.py')
-rwxr-xr-xdeno2/js/pbjs_hack.py49
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)