Source code for aac.plugins.gen_plugin

"""__init__.py module for the Gen Plugin plugin."""
# WARNING - DO NOT EDIT - YOUR CHANGES WILL NOT BE PROTECTED.
# This file is auto-generated by the aac gen-plugin and may be overwritten.

from os.path import join, dirname, abspath
from aac.execute.aac_execution_result import (
    ExecutionResult,
    ExecutionStatus,
)
from aac.execute import hookimpl
from aac.context.language_context import LanguageContext
from aac.execute.plugin_runner import PluginRunner


from aac.plugins.gen_plugin.gen_plugin_impl import (
    plugin_name,
    gen_plugin,
    before_gen_plugin_check,
    after_gen_plugin_generate,
    gen_project,
    before_gen_project_check,
    after_gen_project_generate,
)


from aac.plugins.check import run_check
from aac.plugins.generate import run_generate

gen_plugin_aac_file_name = "gen_plugin.aac"


[docs] def run_gen_plugin( aac_plugin_file: str, code_output: str, test_output: str, doc_output: str, no_prompt: bool, force_overwrite: bool, evaluate: bool, ) -> ExecutionResult: """Generate code and stubs for an AaC plugin. Overwrites will backup existing files.""" result = ExecutionResult(plugin_name, "gen-plugin", ExecutionStatus.SUCCESS, []) gen_plugin_check_result = before_gen_plugin_check( aac_plugin_file, code_output, test_output, doc_output, no_prompt, force_overwrite, evaluate, run_check, ) if not gen_plugin_check_result.is_success(): return gen_plugin_check_result else: result.add_messages(gen_plugin_check_result.messages) gen_plugin_result = gen_plugin( aac_plugin_file, code_output, test_output, doc_output, no_prompt, force_overwrite, evaluate, ) if not gen_plugin_result.is_success(): return gen_plugin_result else: result.add_messages(gen_plugin_result.messages) gen_plugin_generate_result = after_gen_plugin_generate( aac_plugin_file, code_output, test_output, doc_output, no_prompt, force_overwrite, evaluate, run_generate, ) if not gen_plugin_generate_result.is_success(): return gen_plugin_generate_result else: result.add_messages(gen_plugin_generate_result.messages) return result
[docs] def run_gen_project( aac_project_file: str, output: str, no_prompt: bool, force_overwrite: bool, evaluate: bool, ) -> ExecutionResult: """Generate code and stubs for an AaC project. Overwrites will backup existing files.""" result = ExecutionResult(plugin_name, "gen-project", ExecutionStatus.SUCCESS, []) gen_project_check_result = before_gen_project_check( aac_project_file, output, no_prompt, force_overwrite, evaluate, run_check ) if not gen_project_check_result.is_success(): return gen_project_check_result else: result.add_messages(gen_project_check_result.messages) gen_project_result = gen_project( aac_project_file, output, no_prompt, force_overwrite, evaluate ) if not gen_project_result.is_success(): return gen_project_result else: result.add_messages(gen_project_result.messages) if not output or len(output) == 0: output = dirname(abspath(aac_project_file)) gen_project_generate_result = after_gen_project_generate( aac_project_file, output, no_prompt, force_overwrite, evaluate, run_generate ) if not gen_project_generate_result.is_success(): return gen_project_generate_result else: result.add_messages(gen_project_generate_result.messages) return result
[docs] @hookimpl def register_plugin() -> None: """ Returns information about the plugin. Returns: A collection of information about the plugin and what it contributes. """ active_context = LanguageContext() gen_plugin_aac_file = join(dirname(__file__), gen_plugin_aac_file_name) definitions = active_context.parse_and_load(gen_plugin_aac_file) gen_plugin_plugin_definition = [ definition for definition in definitions if definition.name == plugin_name ][0] plugin_instance = gen_plugin_plugin_definition.instance for file_to_load in plugin_instance.definition_sources: active_context.parse_and_load(file_to_load) plugin_runner = PluginRunner(plugin_definition=gen_plugin_plugin_definition) plugin_runner.add_command_callback("gen-plugin", run_gen_plugin) plugin_runner.add_command_callback("gen-project", run_gen_project) active_context.register_plugin_runner(plugin_runner)