diff --git a/src/tools/create_files.py b/src/tools/create_files.py index 458dbfd..7888db3 100755 --- a/src/tools/create_files.py +++ b/src/tools/create_files.py @@ -21,17 +21,7 @@ from tools.logging_config import setup_logging # noqa: F401 -@click.command("create-files") -@click.option( - "--templates", - "-t", - "templates", - required=False, - default="templates/", - type=click.Path(exists=False, dir_okay=True, file_okay=False), - help="Template directory", -) -def create_files_cmd(templates: str): +def create_files(templates: str | Path): """ Render files from templates using secrender. @@ -72,6 +62,20 @@ def create_files_cmd(templates: str): find_toc_tag(file=str(new_file)) +@click.command("create-files") +@click.option( + "--templates", + "-t", + "templates", + required=False, + default="templates/", + type=click.Path(exists=False, dir_okay=True, file_okay=False), + help="Template directory", +) +def create_files_cmd(templates: str): + create_files(templates) + + def rewrite(template_file: Path, template_dir: Path, output_dir: Path) -> str: sub_path = [ p[0] diff --git a/src/tools/helpers/project.py b/src/tools/helpers/project.py index 5b56a36..8f2a1b1 100644 --- a/src/tools/helpers/project.py +++ b/src/tools/helpers/project.py @@ -66,12 +66,12 @@ def get_standards(self) -> tuple: def sort_component_controls(self, component_name: str) -> dict: controls: dict = {} - for component_dir in self.project.components: - if not isinstance(component_dir, str): + for comp_dir in self.project.components: + if not isinstance(comp_dir, str): continue component_path = ( - Path(component_dir).joinpath(component_name).with_suffix(".yaml") - ) + self.project_path / "rendered" / comp_dir / component_name + ).with_suffix(".yaml") if component_path.exists(): component_data = load_yaml_files(component_path) diff --git a/src/tools/make_families.py b/src/tools/make_families.py index bbf1387..43b0d70 100644 --- a/src/tools/make_families.py +++ b/src/tools/make_families.py @@ -150,8 +150,7 @@ def create_family( return families_data -@click.command("make-families") -def make_families_cmd(): +def make_families(): """Create control family files from project data.""" project = Project() project_path = get_project_path() @@ -162,3 +161,8 @@ def make_families_cmd(): create_family(controls_dir=controls_dir, project=project) logger.info(f"Families created at {controls_dir.as_posix()}") print("Process complete.") + + +@click.command("make-families") +def make_families_cmd(): + make_families() diff --git a/src/tools/make_ssp.py b/src/tools/make_ssp.py index c4ee14e..06da895 100644 --- a/src/tools/make_ssp.py +++ b/src/tools/make_ssp.py @@ -15,7 +15,8 @@ from tools.helpers.ssp import Ssp from tools.helpers.ssptoolkit import find_toc_tag from tools.logging_config import setup_logging # noqa: F401 -from tools.make_families import create_family +from tools.create_files import create_files +from tools.make_families import make_families, create_family def get_family_data(family_data: dict, write_to: Path, project: OpenControl) -> Ssp: @@ -89,13 +90,13 @@ def write_ssp(ssp_data: Ssp, write_to: Path, project: OpenControl): print(f"Wrote SSP to {ssp_file}") -@click.command("make-ssp") -def make_ssp_cmd(): - """Generate a System Security Plan (SSP) from the control families.""" +def make_ssp(): project_path = get_project_path() project = Project() write_to = project_path / "rendered" / "docs" - controls_dir = project_path / "rendered" / "controls" + controls_dir = write_to / "controls" + create_files(templates="templates") + make_families() families = create_family( controls_dir=controls_dir, project=project, return_data=True ) @@ -103,3 +104,9 @@ def make_ssp_cmd(): family_data=families, write_to=write_to, project=project.project ) write_ssp(ssp_data=ssp_data, write_to=write_to, project=project.project) + + +@click.command("make-ssp") +def make_ssp_cmd(): + """Generate a System Security Plan (SSP) from the control families.""" + make_ssp()