#!/usr/bin/env bash set -euo pipefail cases_root="${1:-cases}" out_dir="${2:-/tmp/codeql-baseline}" cases_root="$(cd "${cases_root}" && pwd)" mkdir -p "${out_dir}" script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" tmp_dir="$(mktemp -d "${out_dir}/codeql-all-XXXX")" submission="${out_dir}/submission.json" find "${cases_root}" -name case.yaml -print | sort | while read -r case_file; do case_dir="$(dirname "${case_file}")" case_out="${tmp_dir}/$(basename "${case_dir}")" mkdir -p "${case_out}" "${script_dir}/run_case.sh" "${case_dir}" "${case_out}" >/dev/null done python - <<'PY' import json, pathlib, sys tmp_dir = pathlib.Path(sys.argv[1]) dest = pathlib.Path(sys.argv[2]) subs = [] for path in sorted(tmp_dir.glob("*/submission.json")): subs.append(json.loads(path.read_text())) merged = { "version": "1.0.0", "tool": {"name": "codeql", "version": "aggregate"}, "run": {"platform": "codeql-baseline-offline"}, "cases": [] } for sub in subs: merged["cases"].extend(sub.get("cases", [])) merged["cases"] = sorted(merged["cases"], key=lambda c: c.get("case_id","")) dest.write_text(json.dumps(merged, indent=2, sort_keys=True)) print(f"submission written: {dest}") PY "${tmp_dir}" "${submission}"