blob: 0d952a3163541e7668c0a96003685c1cf25b2bbc [file] [log] [blame]
#!/usr/bin/env python3
# This file acts as a drop-in replacement of binary protoc.exe.
# It will use either Python-based protoc from grpcio-tools package,
# or if it is not available, protoc.exe from path if found.
import sys
import os
import os.path
from nanopb_generator import invoke_protoc
if __name__ == '__main__':
# Get path of the directory where this script is stored.
if getattr(sys, 'frozen', False):
mypath = os.path.dirname(sys.executable) # For pyInstaller
else:
mypath = os.path.dirname(__file__)
# Avoid recursive calls to self
env_paths = os.environ["PATH"].split(os.pathsep)
if mypath in env_paths:
env_paths.remove(mypath)
os.environ["PATH"] = os.pathsep.join(env_paths)
# Add argument for finding the nanopb generator when using --nanopb_out=
# argument to protoc.
if os.path.isfile(os.path.join(mypath, "protoc-gen-nanopb.exe")):
protoc_gen_nanopb = os.path.join(mypath, "protoc-gen-nanopb.exe")
elif os.name == 'nt':
protoc_gen_nanopb = os.path.join(mypath, "protoc-gen-nanopb.bat")
else:
protoc_gen_nanopb = os.path.join(mypath, "protoc-gen-nanopb")
args = sys.argv[1:]
if os.path.isfile(protoc_gen_nanopb):
args = ['--plugin=protoc-gen-nanopb=%s' % protoc_gen_nanopb] + args
status = invoke_protoc(['protoc'] + args)
sys.exit(status)