Somewhat redundant changes (new file_ext, arg parse, etc)
[ldk-java] / config.py
1 from enum import Enum
2 import argparse
3 import os
4 import sys
5
6
7 class Language(Enum):
8     Java = 1
9     TypeScript = 2
10
11
12 class Configurator:
13     language: Language
14     debug: bool
15     lightning_h_path: str
16     bindings_output_directory_path: str
17     output_c_path: str
18     output_blob_path: str
19
20     def __init__(self,
21                  lightning_h_path: str,
22                  output_blob_path: str,
23                  bindings_output_directory_path: str,
24                  output_c_path: str,
25                  language: Language = Language.TypeScript,
26                  debug: bool = False):
27         self.language = language
28         self.debug = debug
29
30         self.lightning_h_path = lightning_h_path
31         self.output_blob_path = output_blob_path
32         self.bindings_output_directory_path = bindings_output_directory_path
33         self.output_c_path = output_c_path
34
35
36 def setup():
37     parser = argparse.ArgumentParser(description='Generate Java or Typescript bindings.')
38     parser.add_argument('lightning', type=str, help='Path to lightning.h input')
39     parser.add_argument('output-blob', type=str, help='Path to output blob file')
40     parser.add_argument('bindings-dir', type=str, help='Path to bindings output directory')
41     parser.add_argument('output-c', type=str, help='Path to output.c')
42     parser.add_argument('-l', '--language', type=str, choices=['java', 'typescript'], help='Language',
43                         default='java')
44     parser.add_argument('-d', '--debug', help='Debug', action='store_true', default=False)
45     args = parser.parse_args()
46
47     language = Language.Java
48     if args.language == 'typescript':
49         language = Language.TypeScript
50
51     bindings_directory_input = getattr(args, 'bindings-dir')
52     bindings_directory = os.path.abspath(bindings_directory_input)
53     if not os.path.isdir(bindings_directory):
54         print('Bindings output directory must, in fact, be a directory!', bindings_directory, file=sys.stderr)
55         sys.exit(1)
56
57     configuration = Configurator(
58         lightning_h_path=args.lightning,
59         output_blob_path=getattr(args, 'output-blob'),
60         bindings_output_directory_path=bindings_directory,
61         output_c_path=getattr(args, 'output-c'),
62         debug=args.debug,
63         language=language
64     )
65     return configuration