mirror of
https://github.com/google/pebble.git
synced 2025-03-15 16:51:21 +00:00
40 lines
1.4 KiB
Text
40 lines
1.4 KiB
Text
|
#!/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)
|