+full refactor
+feat: configuration, progress bar, OSV
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from .scanner import scan_running_containers
|
||||
from .osv_client import annotate_containers_with_osv
|
||||
from .report import print_report
|
||||
from .user_config import load_config
|
||||
|
||||
|
||||
def main() -> int:
|
||||
cfg = load_config()
|
||||
|
||||
progress_enabled = bool(cfg.get("progress", {}).get("enabled", True))
|
||||
containers = scan_running_containers(progress_enabled=progress_enabled)
|
||||
|
||||
# Compare against OSV (with severity filtering)
|
||||
osv_cfg = cfg.get("osv", {}) or {}
|
||||
vulns_cfg = cfg.get("vulns", {}) or {}
|
||||
annotate_containers_with_osv(
|
||||
containers,
|
||||
chunk_size=int(osv_cfg.get("chunk_size", 250)),
|
||||
hydrate_details=bool(osv_cfg.get("hydrate_details", True)),
|
||||
max_hydrate_ids=int(osv_cfg.get("max_hydrate_ids", 300)),
|
||||
min_severity=str(vulns_cfg.get("min_severity", "MEDIUM")),
|
||||
include_unknown=bool(vulns_cfg.get("include_unknown", True)),
|
||||
progress_enabled=progress_enabled,
|
||||
)
|
||||
|
||||
out_cfg = cfg.get("output", {}) or {}
|
||||
print_report(
|
||||
containers,
|
||||
group_by_service=bool(out_cfg.get("group_by_service", True)),
|
||||
sections=out_cfg.get("sections", {}) or {},
|
||||
max_deps_per_ecosystem=int(out_cfg.get("max_deps_per_ecosystem", 20)),
|
||||
max_dev_deps_per_ecosystem=int(out_cfg.get("max_dev_deps_per_ecosystem", 10)),
|
||||
top_affected=int(vulns_cfg.get("top_affected", 8)),
|
||||
)
|
||||
|
||||
print("=" * 88)
|
||||
print(f"Всего контейнеров проанализировано: {len(containers)}")
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
Reference in New Issue
Block a user