0
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-10-31 09:14:20 -04:00
denoland-deno/deno2/js/pbjs_hack.py
Ryan Dahl dd48f8095c 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.
2018-06-12 05:16:41 +02:00

49 lines
1.1 KiB
Python
Executable file

#!/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)