diff options
Diffstat (limited to 'buildscripts/idl/idlc.py')
-rw-r--r-- | buildscripts/idl/idlc.py | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/buildscripts/idl/idlc.py b/buildscripts/idl/idlc.py new file mode 100644 index 00000000000..04225b13d7b --- /dev/null +++ b/buildscripts/idl/idlc.py @@ -0,0 +1,73 @@ +#!/usr/bin/env python2 +# Copyright (C) 2017 MongoDB Inc. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License, version 3, +# as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# +"""IDL Compiler Driver Main Entry point.""" + +from __future__ import absolute_import, print_function + +import argparse +import sys + +import idl.compiler + + +def main(): + # type: () -> None + """Main Entry point.""" + parser = argparse.ArgumentParser(description='MongoDB IDL Compiler.') + + parser.add_argument('file', type=str, help="IDL input file") + + parser.add_argument('-o', '--output', type=str, help="IDL output source file") + + parser.add_argument('--header', type=str, help="IDL output header file") + + parser.add_argument( + '-i', + '--include', + type=str, + action="append", + help="Directory to search for IDL import files") + + parser.add_argument('-v', '--verbose', action='count', help="Enable verbose tracing") + + parser.add_argument('--base_dir', type=str, help="IDL output relative base directory") + + args = parser.parse_args() + + compiler_args = idl.compiler.CompilerArgs() + + compiler_args.input_file = args.file + compiler_args.import_directories = args.include + + compiler_args.output_source = args.output + compiler_args.output_header = args.header + compiler_args.output_base_dir = args.base_dir + compiler_args.output_suffix = "_gen" + + if (args.output is not None and args.header is None) or \ + (args.output is None and args.header is not None): + print("ERROR: Either both --header and --output must be specified or neither.") + sys.exit(1) + + # Compile the IDL document the user specified + success = idl.compiler.compile_idl(compiler_args) + + if not success: + sys.exit(1) + + +if __name__ == '__main__': + main() |