Files
VianoBugAnalysis/src/viano_bug_analysis/project_research.py
T

34 lines
1.2 KiB
Python

"""Read-only provider probe. No LLM calls and no case changes."""
import argparse
import json
from pathlib import Path
from .tools.project_query import ProjectResearch
from .tools.config import ToolError
def main(argv=None):
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("--config", required=True, type=Path)
parser.add_argument("--query", required=True, type=Path, help="Structured project-query v1 JSON")
parser.add_argument("--output", type=Path)
args = parser.parse_args(argv)
try:
service = ProjectResearch.load(args.config)
data = service.collect(json.loads(args.query.read_text(encoding="utf-8-sig")))
if args.output:
# Never overwrite a previously captured artifact.
with args.output.open("xb") as output:
output.write(data)
print(json.dumps({"status":"CAPTURED", "bytes":len(data)}))
else:
print(data.decode("utf-8"))
return 0
except (ToolError, OSError, ValueError, TypeError) as error:
print(json.dumps({"status":"ERROR", "code":getattr(error,"code","PROJECT_QUERY_INPUT")}))
return 2
if __name__ == "__main__":
raise SystemExit(main())