mirror of
https://github.com/github/codeql.git
synced 2025-12-16 16:53:25 +01:00
Always concatenate the default filters with the user-provided filters. This ensures that when `paths-ignore` is provided, we begin with the default path inclusions, not all YAML files. This makes the `paths-ignore-only` integration test variant under `filters` pass. The handling of `paths` is unchanged: if provided, this overrides the default filters.
58 lines
2.5 KiB
Bash
Executable File
58 lines
2.5 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
set -eu
|
|
|
|
# Note: We're adding the `reusable_workflows` subdirectories to proactively
|
|
# record workflows that were called cross-repo, check them out locally,
|
|
# and enable an interprocedural analysis across the workflow files.
|
|
# These workflows follow the convention `.github/reusable_workflows/<nwo>/*.ya?ml`
|
|
DEFAULT_PATH_FILTERS=$(cat << END
|
|
exclude:**/*
|
|
include:.github/workflows/*.yml
|
|
include:.github/workflows/*.yaml
|
|
include:.github/reusable_workflows/**/*.yml
|
|
include:.github/reusable_workflows/**/*.yaml
|
|
include:**/action.yml
|
|
include:**/action.yaml
|
|
END
|
|
)
|
|
|
|
if [ -n "${LGTM_INDEX_FILTERS:-}" ]; then
|
|
echo "LGTM_INDEX_FILTERS set. Using the default filters together with the user-provided filters, and passing through to the JavaScript extractor."
|
|
# Begin with the default path inclusions only,
|
|
# followed by the user-provided filters.
|
|
# If the user provided `paths`, those patterns override the default inclusions
|
|
# (because `LGTM_INDEX_FILTERS` will begin with `exclude:**/*`).
|
|
# If the user provided `paths-ignore`, those patterns are excluded.
|
|
PATH_FILTERS="$(cat << END
|
|
${DEFAULT_PATH_FILTERS}
|
|
${LGTM_INDEX_FILTERS}
|
|
END
|
|
)"
|
|
LGTM_INDEX_FILTERS="${PATH_FILTERS}"
|
|
export LGTM_INDEX_FILTERS
|
|
else
|
|
echo "LGTM_INDEX_FILTERS not set. Using the default filters, and passing through to the JavaScript extractor."
|
|
LGTM_INDEX_FILTERS="${DEFAULT_PATH_FILTERS}"
|
|
export LGTM_INDEX_FILTERS
|
|
fi
|
|
|
|
# Find the JavaScript extractor directory via `codeql resolve extractor`.
|
|
CODEQL_EXTRACTOR_JAVASCRIPT_ROOT="$("${CODEQL_DIST}/codeql" resolve extractor --language javascript)"
|
|
export CODEQL_EXTRACTOR_JAVASCRIPT_ROOT
|
|
|
|
echo "Found JavaScript extractor at '${CODEQL_EXTRACTOR_JAVASCRIPT_ROOT}'."
|
|
|
|
# Run the JavaScript autobuilder
|
|
JAVASCRIPT_AUTO_BUILD="${CODEQL_EXTRACTOR_JAVASCRIPT_ROOT}/tools/autobuild.sh"
|
|
echo "Running JavaScript autobuilder at '${JAVASCRIPT_AUTO_BUILD}'."
|
|
|
|
# Copy the values of the Actions extractor environment variables to the JavaScript extractor environment variables.
|
|
env CODEQL_EXTRACTOR_JAVASCRIPT_DIAGNOSTIC_DIR="${CODEQL_EXTRACTOR_ACTIONS_DIAGNOSTIC_DIR}" \
|
|
CODEQL_EXTRACTOR_JAVASCRIPT_LOG_DIR="${CODEQL_EXTRACTOR_ACTIONS_LOG_DIR}" \
|
|
CODEQL_EXTRACTOR_JAVASCRIPT_SCRATCH_DIR="${CODEQL_EXTRACTOR_ACTIONS_SCRATCH_DIR}" \
|
|
CODEQL_EXTRACTOR_JAVASCRIPT_SOURCE_ARCHIVE_DIR="${CODEQL_EXTRACTOR_ACTIONS_SOURCE_ARCHIVE_DIR}" \
|
|
CODEQL_EXTRACTOR_JAVASCRIPT_TRAP_DIR="${CODEQL_EXTRACTOR_ACTIONS_TRAP_DIR}" \
|
|
CODEQL_EXTRACTOR_JAVASCRIPT_WIP_DATABASE="${CODEQL_EXTRACTOR_ACTIONS_WIP_DATABASE}" \
|
|
"${JAVASCRIPT_AUTO_BUILD}"
|