Source code for sw_metadata_bot.rsmetacheck_wrapper

"""Wrapper for rsmetacheck CLI to integrate with sw-metadata-bot."""

import sys
from pathlib import Path

from rsmetacheck import cli as rsmetacheck_cli


def _default_non_failing_rsmetacheck_config() -> Path:
    """Return the packaged rsmetacheck config that disables CI exit-on-findings."""
    return Path(__file__).resolve().parent / "config" / "rsmetacheck_non_failing.toml"


[docs] def run_rsmetacheck( *, input_source: str, skip_somef: bool = False, somef_output: str = "somef_outputs", pitfalls_output: str = "pitfalls_outputs", analysis_output: str = "analysis_results.json", threshold: float = 0.8, generate_codemeta: bool = False, config_file: str | None = None, config_profile: str | None = None, ) -> None: """Run rsmetacheck CLI by constructing and forwarding argv.""" argv = ["rsmetacheck"] config_path = _default_non_failing_rsmetacheck_config() argv.extend(["--input", input_source.strip()]) argv.extend(["--somef-output", somef_output]) argv.extend(["--pitfalls-output", pitfalls_output]) argv.extend(["--analysis-output", analysis_output]) argv.extend(["--threshold", str(threshold)]) argv.extend(["--config", str(config_path)]) if config_profile: argv.extend(["--config-profile", config_profile]) if skip_somef: argv.append("--skip-somef") if generate_codemeta: argv.append("--generate-codemeta") # jsonld output also includes non-detected checks when verbose is enabled. argv.append("--verbose") original_argv = sys.argv try: sys.argv = argv rsmetacheck_cli() except SystemExit as exc: if exc.code not in {0, None}: return raise finally: sys.argv = original_argv