diff options
author | Ryan Dahl <ry@tinyclouds.org> | 2018-06-12 05:16:41 +0200 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2018-06-12 05:16:41 +0200 |
commit | dd48f8095c3357e6ec0e66042141c4e342707da5 (patch) | |
tree | 2f10e1497cf152e5c38c617f8babca94af52d965 /deno2/js/pbjs_hack.py | |
parent | 0f71da91d319f1fdb297e096342ac45528544aa1 (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-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) |