summaryrefslogtreecommitdiff
path: root/deno2/js/pbjs_hack.py
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2018-06-12 05:16:41 +0200
committerRyan Dahl <ry@tinyclouds.org>2018-06-12 05:16:41 +0200
commitdd48f8095c3357e6ec0e66042141c4e342707da5 (patch)
tree2f10e1497cf152e5c38c617f8babca94af52d965 /deno2/js/pbjs_hack.py
parent0f71da91d319f1fdb297e096342ac45528544aa1 (diff)
Simplify pbjs build with hack.
Just check in the generated files and create them using js/pbjs_hack.py. This allows vscode to be used and sane compilations.
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)