mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-01-26 19:09:52 +00:00
## Summary Added GitHub Actions workflow and shell script to validate JSON syntax in repository files, as in the past we have committed locales files with invalid JSON. ## Changes - **What**: Added CI workflow for JSON validation with `jq` syntax checking - **Dependencies**: CI workflow requires `jq` (pre-installed on ubuntu-latest runners) ## Review Focus Script exclusion patterns for TSConfig files and environment variable override mechanism (`JSON_LINT_EXCLUDES`). ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-5837-ci-add-JSON-validation-CI-workflow-27c6d73d365081a199b1d9ae9e4edfa4) by [Unito](https://www.unito.io)
78 lines
1.3 KiB
Bash
Executable File
78 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
usage() {
|
|
echo "Usage: $0 [--debug]" >&2
|
|
}
|
|
|
|
debug=0
|
|
|
|
while [ "$#" -gt 0 ]; do
|
|
case "$1" in
|
|
--debug)
|
|
debug=1
|
|
;;
|
|
-h|--help)
|
|
usage
|
|
exit 0
|
|
;;
|
|
*)
|
|
echo "Unknown option: $1" >&2
|
|
usage
|
|
exit 2
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
# Validate JSON syntax in tracked files using jq
|
|
if ! command -v jq >/dev/null 2>&1; then
|
|
echo "Error: jq is required but not installed" >&2
|
|
exit 127
|
|
fi
|
|
|
|
EXCLUDE_PATTERNS=(
|
|
'**/tsconfig*.json'
|
|
)
|
|
|
|
if [ -n "${JSON_LINT_EXCLUDES:-}" ]; then
|
|
# shellcheck disable=SC2206
|
|
EXCLUDE_PATTERNS+=( ${JSON_LINT_EXCLUDES} )
|
|
fi
|
|
|
|
pathspecs=(-- '*.json')
|
|
for pattern in "${EXCLUDE_PATTERNS[@]}"; do
|
|
if [[ ${pattern:0:1} == ':' ]]; then
|
|
pathspecs+=("$pattern")
|
|
else
|
|
pathspecs+=(":(glob,exclude)${pattern}")
|
|
fi
|
|
done
|
|
|
|
mapfile -t json_files < <(git ls-files "${pathspecs[@]}")
|
|
|
|
if [ "${#json_files[@]}" -eq 0 ]; then
|
|
echo 'No JSON files found.'
|
|
exit 0
|
|
fi
|
|
|
|
if [ "$debug" -eq 1 ]; then
|
|
echo 'JSON files to validate:'
|
|
printf ' %s\n' "${json_files[@]}"
|
|
fi
|
|
|
|
failed=0
|
|
for file in "${json_files[@]}"; do
|
|
if ! jq -e . "$file" >/dev/null; then
|
|
echo "Invalid JSON syntax: $file" >&2
|
|
failed=1
|
|
fi
|
|
done
|
|
|
|
if [ "$failed" -ne 0 ]; then
|
|
echo 'JSON validation failed.' >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo 'All JSON files are valid.'
|