import os from application import app # type: ignore from common_apispec.generator.processors import YamlProcessor, ApiSpecProcessor # Tests are required!!! if __name__ == "__main__": print("\nGenerating spec file...") product_name = os.path.split(os.getcwd())[1].replace("-", "_") # The following paths are relative to the project root and should be possible to change from the CLI deprecated_spec_path = f"spec/{product_name}-deprecated.yaml" generated_spec_path = f"spec/{product_name}-generated.yaml" target_spec_path = f"spec/{product_name}-1.0.0.yaml" if os.path.isfile(deprecated_spec_path): # Generate separate spec file YamlProcessor.save_yaml( data=ApiSpecProcessor.generate_spec( app, settings=YamlProcessor.load_yaml(deprecated_spec_path) ), file_path=generated_spec_path, ) # Merge the deprecated and generated spec files YamlProcessor.save_yaml( data=YamlProcessor.merge(deprecated_spec_path, generated_spec_path), file_path=target_spec_path, ) else: settings = app.config.get("APISPEC_SETTINGS", {}) if not settings: raise ValueError( "APISPEC_SETTINGS not found in app config. Please provide necessary settings for spec generation." ) # Generate main spec file YamlProcessor.save_yaml( data=ApiSpecProcessor.generate_spec(app, settings=settings), file_path=target_spec_path, ) print("\nSpec file generated successfully.")