10826e83eSopenharmony_ci#!/usr/bin/env python3 20826e83eSopenharmony_ci# -*- coding: utf-8 -*- 30826e83eSopenharmony_ci# 40826e83eSopenharmony_ci# Copyright (c) 2022 Huawei Device Co., Ltd. 50826e83eSopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License"); 60826e83eSopenharmony_ci# you may not use this file except in compliance with the License. 70826e83eSopenharmony_ci# You may obtain a copy of the License at 80826e83eSopenharmony_ci# 90826e83eSopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0 100826e83eSopenharmony_ci# 110826e83eSopenharmony_ci# Unless required by applicable law or agreed to in writing, software 120826e83eSopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS, 130826e83eSopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 140826e83eSopenharmony_ci# See the License for the specific language governing permissions and 150826e83eSopenharmony_ci# limitations under the License. 160826e83eSopenharmony_ci# 170826e83eSopenharmony_ci 180826e83eSopenharmony_ci 190826e83eSopenharmony_cifrom __future__ import print_function 200826e83eSopenharmony_ciimport argparse 210826e83eSopenharmony_ciimport os.path 220826e83eSopenharmony_ciimport subprocess 230826e83eSopenharmony_ciimport sys 240826e83eSopenharmony_ci 250826e83eSopenharmony_cidef main(argv): 260826e83eSopenharmony_ci parser = argparse.ArgumentParser() 270826e83eSopenharmony_ci parser.add_argument("--protoc", required=True, 280826e83eSopenharmony_ci help="Relative path to compiler.") 290826e83eSopenharmony_ci 300826e83eSopenharmony_ci parser.add_argument("--protos-dir", required=True, 310826e83eSopenharmony_ci help="protos in dir.") 320826e83eSopenharmony_ci parser.add_argument("--cpp-out", 330826e83eSopenharmony_ci help="Output directory for standard C++ generator.") 340826e83eSopenharmony_ci parser.add_argument("protos", nargs="+", 350826e83eSopenharmony_ci help="Input protobuf definition file(s).") 360826e83eSopenharmony_ci 370826e83eSopenharmony_ci options = parser.parse_args(argv) 380826e83eSopenharmony_ci 390826e83eSopenharmony_ci protos_dir = os.path.relpath(options.protos_dir) 400826e83eSopenharmony_ci proto_files = options.protos 410826e83eSopenharmony_ci 420826e83eSopenharmony_ci # Generate protoc cmd. 430826e83eSopenharmony_ci protoc_cmd = [os.path.realpath(options.protoc)] 440826e83eSopenharmony_ci if options.cpp_out: 450826e83eSopenharmony_ci cpp_out = options.cpp_out 460826e83eSopenharmony_ci protoc_cmd += ["--cpp_out", cpp_out] 470826e83eSopenharmony_ci 480826e83eSopenharmony_ci protoc_cmd += ["--proto_path", protos_dir] 490826e83eSopenharmony_ci protoc_cmd += [os.path.join(protos_dir, name) for name in proto_files] 500826e83eSopenharmony_ci 510826e83eSopenharmony_ci ret = subprocess.call(protoc_cmd) 520826e83eSopenharmony_ci if ret != 0: 530826e83eSopenharmony_ci raise RuntimeError("Protoc failed.") 540826e83eSopenharmony_ci 550826e83eSopenharmony_ciif __name__ == "__main__": 560826e83eSopenharmony_ci main(sys.argv[1:]) 57