def run(self, descriptors, filepath, args): content = '// This file is auto-generated by Tabugen v%s, DO NOT EDIT!\n\n' % version.VER_STRING content += 'using System;\n' content += 'using System.Collections.Generic;\n' if args.package is not None: content += '\nnamespace %s\n{\n' % args.package if self.load_gen is not None: (array_delim, map_delims) = strutil.to_sep_delimiters(args.array_delim, args.map_delims) self.load_gen.setup(array_delim, map_delims, args.config_manager_class) for struct in descriptors: content += self.generate_class(struct, args) if self.load_gen is not None: content += self.load_gen.gen_global_class(descriptors, args) if args.package is not None: content += '\n}\n' # namespace filename = os.path.abspath(filepath) strutil.save_content_if_not_same(filename, content, 'utf-8') print('wrote C# source file to', filename)
def run(self, descriptors, filepath, args): content = '' content += go_template.GO_HEAD_TEMPLATE % (version.VER_STRING, args.package) if args.json_snake_case: self.json_snake_case = True if self.load_gen is not None: (array_delim, map_delims) = strutil.to_sep_delimiters(args.array_delim, args.map_delims) self.load_gen.setup(array_delim, map_delims) for struct in descriptors: content += self.generate(struct, args) filename = os.path.abspath(filepath) if self.load_gen is not None: self.load_gen.gen_helper_file(filename, version.VER_STRING, args) strutil.save_content_if_not_same(filename, content, 'utf-8') print('wrote Go source to %s' % filename) if args.go_fmt: cmd = 'go fmt ' + filename goroot = os.getenv('GOROOT') if goroot is not None: cmd = goroot + '/bin/' + cmd print(cmd) os.system(cmd)
def run(self, descriptors, filepath, args): outname = os.path.split(filepath)[-1] cpp_content = '' if self.load_gen is not None: (array_delim, map_delims) = strutil.to_sep_delimiters(args.array_delim, args.map_delims) self.load_gen.setup(array_delim, map_delims, args.out_csv_delim, args.config_manager_class) filename = outname + '.h' cpp_content = self.load_gen.gen_source_method( descriptors, args, filename) header_content = self.gen_header_content(descriptors, args) header_filepath = filepath + '.h' filename = os.path.abspath(header_filepath) strutil.save_content_if_not_same(filename, header_content, args.source_file_encoding) print('wrote C++ header file to', filename) if len(cpp_content) > 0: source_filepath = filepath + '.cpp' filename = os.path.abspath(source_filepath) modified = strutil.save_content_if_not_same( filename, cpp_content, args.source_file_encoding) if modified: print('wrote C++ source file to', filename) else: print('file content not modified', filename)
def gen_helper_file(main_filepath, ver, args): (array_delim, map_delims) = strutil.to_sep_delimiters(args.array_delim, args.map_delims) const_def = go_template.GO_CONST_TEMPLATE % ( args.out_csv_delim, '"', array_delim, map_delims[0], map_delims[1]) filepath = os.path.abspath(os.path.dirname(main_filepath)) filename = filepath + os.path.sep + 'helper.go' content = go_template.GO_HELP_FILE_HEAD_TEMPLATE % (ver, args.package) content += go_template.GO_HELP_FILE_TEMPLATE + const_def strutil.save_content_if_not_same(filename, content, 'utf-8')
def write_file(self, struct, filepath, encoding, json_indent, obj): filename = "%s/%s.json" % (filepath, strutil.camel_to_snake(struct['camel_case_name'])) filename = os.path.abspath(filename) if json_indent: content = json.dumps(obj, ensure_ascii=False, allow_nan=False, sort_keys=True, indent=2) else: content = json.dumps(obj, ensure_ascii=False, allow_nan=False, sort_keys=True) if strutil.save_content_if_not_same(filename, content, encoding): print("wrote JSON data to", filename)
def run(self, descriptors, filepath, args): mgr_content = '// This file is auto-generated by taxi v%s, DO NOT EDIT!\n\n' % version.VER_STRING mgr_filename = '' if args.config_manager_class != '': mgr_filename = '%s.java' % args.config_manager_class try: os.mkdir(filepath) except OSError as e: pass if args.package is not None: pkgname = args.package names = [filepath] + pkgname.split('.') basedir = '/'.join(names) filepath = basedir mgr_content += 'package %s;' % pkgname mgr_filename = '%s/%s' % (basedir, mgr_filename) try: print('make dir', basedir) os.makedirs(basedir) except OSError as e: pass if self.load_gen: (array_delim, map_delims) = strutil.to_sep_delimiters(args.array_delim, args.map_delims) self.load_gen.setup(array_delim, map_delims, args.config_manager_class) sep_delim = strutil.escape_delimiter(args.out_csv_delim) quote_delim = strutil.escape_delimiter('"') if args.config_manager_class != "": mgr_content += java_template.JAVA_MGR_CLASS_TEMPLATE % ( args.config_manager_class, sep_delim, quote_delim, array_delim, map_delims[0], map_delims[1]) class_dict = {} pkg_imports = [ 'import java.util.*;', ] if self.load_gen is not None: csv_imports = [ 'import java.io.IOException;', 'import org.apache.commons.csv.*;', ] pkg_imports += csv_imports for struct in descriptors: content = '// This file is auto-generated by Tabugen v%s, DO NOT EDIT!\n\n' % version.VER_STRING filename = '%s.java' % struct['camel_case_name'] # print(filename) if args.package: filename = '%s/%s' % (filepath, filename) content += 'package %s;\n\n' % args.package content += '\n'.join(pkg_imports) content += '\n' content += self.generate_class(struct, args) class_dict[filename] = content mgr_content += '}\n' if self.load_gen is not None and args.config_manager_class != '': class_dict[mgr_filename] = mgr_content for filename in class_dict: content = class_dict[filename] filename = os.path.abspath(filename) strutil.save_content_if_not_same(filename, content, args.source_file_encoding) print('wrote Java source file to', filename)