#!/bin/sh set -eu usage() { echo "usage: classify-ci-changes.sh --git " >&2 echo " classify-ci-changes.sh --files " >&2 exit 2 } mode="${1:-}" profile="${2:-}" case "$profile" in ci|codeql) ;; *) usage ;; esac case "$mode" in --git) [ "$#" -eq 4 ] || usage paths="$(git diff --name-only "$3" "$4")" ;; --files) [ "$#" -eq 2 ] || usage paths="$(cat)" ;; *) usage ;; esac go=false web=false deployment=false security=false integration=false dependencies=false release_metadata=false javascript=false full=false while IFS= read -r path; do [ -n "$path" ] || continue case "$path" in cmd/*|internal/*|go.mod|go.sum|docs/openapi.json|scripts/generate-openapi.mjs|scripts/run-ci-go-tests.sh|scripts/select-center-tests.sh|scripts/center-test-timings.txt) go=true ;; esac case "$path" in web/*) web=true ;; esac case "$path" in deploy/*|scripts/*|install.sh|catalog/*|internal/center/testdata/reviewed-catalog-v4.json|Dockerfile*|release-please-config.json) deployment=true ;; esac case "$path" in go.mod|go.sum|web/package.json|web/package-lock.json) dependencies=true ;; esac case "$path" in internal/agent/*|internal/landing/*|internal/recovery/*|internal/dantebundle/*|internal/deployer/*|internal/meridianruntime/*|internal/center/*composite*|internal/center/*landing*|internal/center/agent_*|internal/center/store_agent*|internal/center/business_handover*|internal/center/server*|internal/center/setup*|internal/center/initial_setup*|internal/center/topology*|internal/center/orchestration*|internal/center/schema*|internal/center/migrations/*|cmd/*|deploy/center/*.sh|deploy/center/compose.yaml|deploy/landing/Dockerfile|scripts/run-composite-runtime-lab.sh|scripts/build-landing-dante.sh|scripts/install-landing-build-deps.sh|scripts/meridian-recovery-lab/*|catalog/*|internal/center/testdata/reviewed-catalog-v4.json|go.mod|go.sum|Dockerfile*) integration=true ;; esac case "$path" in .release-please-manifest.json|version.txt) release_metadata=true; full=true ;; *) security=true ;; esac case "$path" in web/*|deploy/installer-worker/*|scripts/*.mjs|scripts/*.js) javascript=true ;; esac case "$path" in .github/workflows/*|.github/actions/*|.github/dependabot.yml|Makefile|release-please-config.json|scripts/classify-ci-changes.sh) full=true ;; esac case "$path" in cmd/*|internal/*|web/*|deploy/*|scripts/*|catalog/*|.github/*|docs/*|*.md|Dockerfile*|.dockerignore|go.mod|go.sum|install.sh|version.txt|.release-please-manifest.json|release-please-config.json|LICENSE) ;; *) full=true ;; esac done <