def output_settings(project_root, schema, generator_name, data_models, core_data, project_name): settings_filename = project_root + os.sep + ".signalsconfig" progress("Writing settings to {}".format(settings_filename)) keys = ["schema", "generator", "data_models", "core_data", "project_name"] values = [schema, generator_name, data_models, core_data, project_name] with open(settings_filename, "w") as settings_file: for (key, val) in zip(keys, values): settings_file.write("{}={}\n".format(key, val))
def __init__(self, schema_path): self.data_objects = {} self.urls = [] self.schema_path = schema_path progress("Parsing your schema file") with open(schema_path, "r") as schema_file: schema_json = json.loads(schema_file.read()) self.create_objects(schema_json["objects"]) self.create_apis(schema_json["urls"]) self.validate_apis_and_objects() self.add_relationship_objects()
def run_signals(schema, generator_name, data_models, core_data, check_xcode, project_name, save): schema = Schema(schema) generator = generators[generator_name](generator_name, schema, data_models, core_data, check_xcode, project_name) try: generator.process() if save: save_settings([data_models, core_data], schema, generator_name, data_models, core_data, project_name) except SignalsError as e: print(str(e)) else: progress('Finished generating your files!') finally: generator.clear_generated_code_files()
def process(self): if self.core_data_path is not None: if self.check_xcode and self.is_xcode_running(): raise SignalsError( "Must quit Xcode before writing to core data") progress("Creating core data file") write_xml_to_file(self.core_data_path, self.schema.data_objects) if self.__class__ == ObjectiveCGenerator: progress('Preparing to generate Objective-C templates') template_to_generate = ObjectiveCTemplate else: progress('Preparing to generate Swift templates') template_to_generate = SwiftTemplate progress("Creating data model file") template_to_generate(self.project_name, self.schema, self.data_models_path, self.jinja2_environment, BaseGenerator.BUILD_DIR).process() self.check_setup_called()