mirror of
https://github.com/go-gitea/gitea.git
synced 2025-12-24 05:08:54 +00:00
Add JSON linting (#36192)
Uses https://github.com/eslint/json to lint all JSON and JSONC files in the repo.
This commit is contained in:
6
.github/workflows/files-changed.yml
vendored
6
.github/workflows/files-changed.yml
vendored
@@ -19,6 +19,8 @@ on:
|
|||||||
value: ${{ jobs.detect.outputs.swagger }}
|
value: ${{ jobs.detect.outputs.swagger }}
|
||||||
yaml:
|
yaml:
|
||||||
value: ${{ jobs.detect.outputs.yaml }}
|
value: ${{ jobs.detect.outputs.yaml }}
|
||||||
|
json:
|
||||||
|
value: ${{ jobs.detect.outputs.json }}
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
detect:
|
detect:
|
||||||
@@ -35,6 +37,7 @@ jobs:
|
|||||||
docker: ${{ steps.changes.outputs.docker }}
|
docker: ${{ steps.changes.outputs.docker }}
|
||||||
swagger: ${{ steps.changes.outputs.swagger }}
|
swagger: ${{ steps.changes.outputs.swagger }}
|
||||||
yaml: ${{ steps.changes.outputs.yaml }}
|
yaml: ${{ steps.changes.outputs.yaml }}
|
||||||
|
json: ${{ steps.changes.outputs.json }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v6
|
||||||
- uses: dorny/paths-filter@v3
|
- uses: dorny/paths-filter@v3
|
||||||
@@ -100,3 +103,6 @@ jobs:
|
|||||||
- "**/*.yaml"
|
- "**/*.yaml"
|
||||||
- ".yamllint.yaml"
|
- ".yamllint.yaml"
|
||||||
- "pyproject.toml"
|
- "pyproject.toml"
|
||||||
|
|
||||||
|
json:
|
||||||
|
- "**/*.json"
|
||||||
|
|||||||
15
.github/workflows/pull-compliance.yml
vendored
15
.github/workflows/pull-compliance.yml
vendored
@@ -63,6 +63,21 @@ jobs:
|
|||||||
- run: make deps-py
|
- run: make deps-py
|
||||||
- run: make lint-yaml
|
- run: make lint-yaml
|
||||||
|
|
||||||
|
lint-json:
|
||||||
|
if: needs.files-changed.outputs.json == 'true'
|
||||||
|
needs: files-changed
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v6
|
||||||
|
- uses: pnpm/action-setup@v4
|
||||||
|
- uses: actions/setup-node@v5
|
||||||
|
with:
|
||||||
|
node-version: 24
|
||||||
|
- run: make deps-frontend
|
||||||
|
- run: make lint-json
|
||||||
|
|
||||||
lint-swagger:
|
lint-swagger:
|
||||||
if: needs.files-changed.outputs.swagger == 'true'
|
if: needs.files-changed.outputs.swagger == 'true'
|
||||||
needs: files-changed
|
needs: files-changed
|
||||||
|
|||||||
8
Makefile
8
Makefile
@@ -413,6 +413,14 @@ lint-templates: .venv node_modules ## lint template files
|
|||||||
lint-yaml: .venv ## lint yaml files
|
lint-yaml: .venv ## lint yaml files
|
||||||
@uv run --frozen yamllint -s .
|
@uv run --frozen yamllint -s .
|
||||||
|
|
||||||
|
.PHONY: lint-json
|
||||||
|
lint-json: node_modules ## lint json files
|
||||||
|
$(NODE_VARS) pnpm exec eslint -c eslint.json.config.ts --color --max-warnings=0
|
||||||
|
|
||||||
|
.PHONY: lint-json-fix
|
||||||
|
lint-json-fix: node_modules ## lint and fix json files
|
||||||
|
$(NODE_VARS) pnpm exec eslint -c eslint.json.config.ts --color --max-warnings=0 --fix
|
||||||
|
|
||||||
.PHONY: watch
|
.PHONY: watch
|
||||||
watch: ## watch everything and continuously rebuild
|
watch: ## watch everything and continuously rebuild
|
||||||
@bash tools/watch.sh
|
@bash tools/watch.sh
|
||||||
|
|||||||
30
eslint.json.config.ts
Normal file
30
eslint.json.config.ts
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
import {defineConfig, globalIgnores} from 'eslint/config';
|
||||||
|
import json from '@eslint/json';
|
||||||
|
|
||||||
|
export default defineConfig([
|
||||||
|
globalIgnores([
|
||||||
|
'**/.venv',
|
||||||
|
'**/node_modules',
|
||||||
|
'**/public',
|
||||||
|
]),
|
||||||
|
{
|
||||||
|
files: ['**/*.json'],
|
||||||
|
plugins: {json},
|
||||||
|
language: 'json/json',
|
||||||
|
extends: ['json/recommended'],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
files: [
|
||||||
|
'tsconfig.json',
|
||||||
|
'.devcontainer/*.json',
|
||||||
|
'.vscode/*.json',
|
||||||
|
'contrib/ide/vscode/*.json',
|
||||||
|
],
|
||||||
|
plugins: {json},
|
||||||
|
language: 'json/jsonc',
|
||||||
|
languageOptions: {
|
||||||
|
allowTrailingCommas: true,
|
||||||
|
},
|
||||||
|
extends: ['json/recommended'],
|
||||||
|
},
|
||||||
|
]);
|
||||||
@@ -66,6 +66,7 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@eslint-community/eslint-plugin-eslint-comments": "4.5.0",
|
"@eslint-community/eslint-plugin-eslint-comments": "4.5.0",
|
||||||
|
"@eslint/json": "0.14.0",
|
||||||
"@playwright/test": "1.57.0",
|
"@playwright/test": "1.57.0",
|
||||||
"@stylistic/eslint-plugin": "5.6.1",
|
"@stylistic/eslint-plugin": "5.6.1",
|
||||||
"@stylistic/stylelint-plugin": "4.0.0",
|
"@stylistic/stylelint-plugin": "4.0.0",
|
||||||
|
|||||||
20
pnpm-lock.yaml
generated
20
pnpm-lock.yaml
generated
@@ -201,6 +201,9 @@ importers:
|
|||||||
'@eslint-community/eslint-plugin-eslint-comments':
|
'@eslint-community/eslint-plugin-eslint-comments':
|
||||||
specifier: 4.5.0
|
specifier: 4.5.0
|
||||||
version: 4.5.0(eslint@9.39.2(jiti@2.6.1))
|
version: 4.5.0(eslint@9.39.2(jiti@2.6.1))
|
||||||
|
'@eslint/json':
|
||||||
|
specifier: 0.14.0
|
||||||
|
version: 0.14.0
|
||||||
'@playwright/test':
|
'@playwright/test':
|
||||||
specifier: 1.57.0
|
specifier: 1.57.0
|
||||||
version: 1.57.0
|
version: 1.57.0
|
||||||
@@ -856,6 +859,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==}
|
resolution: {integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
|
||||||
|
'@eslint/json@0.14.0':
|
||||||
|
resolution: {integrity: sha512-rvR/EZtvUG3p9uqrSmcDJPYSH7atmWr0RnFWN6m917MAPx82+zQgPUmDu0whPFG6XTyM0vB/hR6c1Q63OaYtCQ==}
|
||||||
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
|
||||||
'@eslint/object-schema@2.1.7':
|
'@eslint/object-schema@2.1.7':
|
||||||
resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==}
|
resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
@@ -894,6 +901,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
|
resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
|
||||||
engines: {node: '>=12.22'}
|
engines: {node: '>=12.22'}
|
||||||
|
|
||||||
|
'@humanwhocodes/momoa@3.3.10':
|
||||||
|
resolution: {integrity: sha512-KWiFQpSAqEIyrTXko3hFNLeQvSK8zXlJQzhhxsyVn58WFRYXST99b3Nqnu+ttOtjds2Pl2grUHGpe2NzhPynuQ==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
|
||||||
'@humanwhocodes/retry@0.4.3':
|
'@humanwhocodes/retry@0.4.3':
|
||||||
resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==}
|
resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==}
|
||||||
engines: {node: '>=18.18'}
|
engines: {node: '>=18.18'}
|
||||||
@@ -4815,6 +4826,13 @@ snapshots:
|
|||||||
|
|
||||||
'@eslint/js@9.39.2': {}
|
'@eslint/js@9.39.2': {}
|
||||||
|
|
||||||
|
'@eslint/json@0.14.0':
|
||||||
|
dependencies:
|
||||||
|
'@eslint/core': 0.17.0
|
||||||
|
'@eslint/plugin-kit': 0.4.1
|
||||||
|
'@humanwhocodes/momoa': 3.3.10
|
||||||
|
natural-compare: 1.4.0
|
||||||
|
|
||||||
'@eslint/object-schema@2.1.7': {}
|
'@eslint/object-schema@2.1.7': {}
|
||||||
|
|
||||||
'@eslint/plugin-kit@0.4.1':
|
'@eslint/plugin-kit@0.4.1':
|
||||||
@@ -4846,6 +4864,8 @@ snapshots:
|
|||||||
|
|
||||||
'@humanwhocodes/module-importer@1.0.1': {}
|
'@humanwhocodes/module-importer@1.0.1': {}
|
||||||
|
|
||||||
|
'@humanwhocodes/momoa@3.3.10': {}
|
||||||
|
|
||||||
'@humanwhocodes/retry@0.4.3': {}
|
'@humanwhocodes/retry@0.4.3': {}
|
||||||
|
|
||||||
'@iconify/types@2.0.0': {}
|
'@iconify/types@2.0.0': {}
|
||||||
|
|||||||
Reference in New Issue
Block a user