-from enum import Enum
-import argparse
-import os
-import sys
-
-
-class Language(Enum):
- Java = 1
- TypeScript = 2
-
-
-class Configurator:
- language: Language
- debug: bool
- lightning_h_path: str
- bindings_output_directory_path: str
- output_c_path: str
- output_blob_path: str
-
- def __init__(self,
- lightning_h_path: str,
- output_blob_path: str,
- bindings_output_directory_path: str,
- output_c_path: str,
- language: Language = Language.TypeScript,
- debug: bool = False):
- self.language = language
- self.debug = debug
-
- self.lightning_h_path = lightning_h_path
- self.output_blob_path = output_blob_path
- self.bindings_output_directory_path = bindings_output_directory_path
- self.output_c_path = output_c_path
-
-
-def setup():
- parser = argparse.ArgumentParser(description='Generate Java or Typescript bindings.')
- parser.add_argument('lightning', type=str, help='Path to lightning.h input')
- parser.add_argument('output-blob', type=str, help='Path to output blob file')
- parser.add_argument('bindings-dir', type=str, help='Path to bindings output directory')
- parser.add_argument('output-c', type=str, help='Path to output.c')
- parser.add_argument('-l', '--language', type=str, choices=['java', 'typescript'], help='Language',
- default='java')
- parser.add_argument('-d', '--debug', help='Debug', action='store_true', default=False)
- args = parser.parse_args()
-
- language = Language.Java
- if args.language == 'typescript':
- language = Language.TypeScript
-
- bindings_directory_input = getattr(args, 'bindings-dir')
- bindings_directory = os.path.abspath(bindings_directory_input)
- if not os.path.isdir(bindings_directory):
- print('Bindings output directory must, in fact, be a directory!', bindings_directory, file=sys.stderr)
- sys.exit(1)
-
- configuration = Configurator(
- lightning_h_path=args.lightning,
- output_blob_path=getattr(args, 'output-blob'),
- bindings_output_directory_path=bindings_directory,
- output_c_path=getattr(args, 'output-c'),
- debug=args.debug,
- language=language
- )
- return configuration