qa: Enforce JSON standard for GCT configs (#1526)

* qa: Enforce JSON lint for GCT configs

* Makefile/GHA: Make output more verbose on success, clean duplicate PHONY and rid excess newlines

* Makefile: Use printf for OS cross-compatibility output
This commit is contained in:
Adrian Gallagher
2024-04-30 16:02:09 +10:00
committed by GitHub
parent b46b793995
commit 1e95ae9b79
4 changed files with 3031 additions and 2990 deletions

24
.github/workflows/configs-json-lint.yml vendored Normal file
View File

@@ -0,0 +1,24 @@
name: configs-json-lint
on: [push, pull_request]
jobs:
lint:
name: configs JSON lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Check configs JSON format
run: |
files=("config_example.json" "testdata/configtest.json")
for file in "${files[@]}"; do
processed_file="${file%.*}_processed.${file##*.}"
jq '.exchanges |= sort_by(.name)' --indent 1 $file > $processed_file
if ! diff $file $processed_file; then
echo "jq differences found in $file! Please run 'make lint_configs'"
exit 1
else
rm $processed_file
echo "No differences found in $file 🌞"
fi
done

View File

@@ -61,3 +61,20 @@ endif
target/sqlboiler.json:
mkdir -p $(@D)
go run ./cmd/gen_sqlboiler_config/main.go $(CONFIG_FLAG) -outdir $(@D)
.PHONY: lint_configs
lint_configs: check-jq
@$(call sort-json,config_example.json)
@$(call sort-json,testdata/configtest.json)
define sort-json
@printf "Processing $(1)... "
@jq '.exchanges |= sort_by(.name)' --indent 1 $(1) > $(1).temp && \
(mv $(1).temp $(1) && printf "OK\n") || \
(rm $(1).temp; printf "FAILED\n"; exit 1)
endef
.PHONY: check-jq
check-jq:
@printf "Checking if jq is installed... "
@command -v jq >/dev/null 2>&1 && { printf "OK\n"; } || { printf "FAILED. Please install jq to proceed.\n"; exit 1; }

File diff suppressed because one or more lines are too long

4720
testdata/configtest.json vendored

File diff suppressed because one or more lines are too long