diff --git a/.github/workflows/eslint.yml b/.github/workflows/eslint.yml new file mode 100644 index 0000000000..3f0290e098 --- /dev/null +++ b/.github/workflows/eslint.yml @@ -0,0 +1,33 @@ +--- +name: "LuCI repo ESLint JSON Analysis" + +on: + push: + branches: [ "master" ] + path: + - '**/*.json' + pull_request: + branches: [ "master" ] + path: + - '**/*.json' +permissions: {} + +jobs: + eslint: + runs-on: ubuntu-latest + steps: + - name: Check out repository + uses: actions/checkout@v4 + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: latest + + - name: Install ESLint + run: npm install --no-audit --no-fund --save-dev eslint@latest @eslint/json@latest + + # Currently, we lint JSON only. + - name: Run ESLint + run: npx eslint **/*.json + diff --git a/.gitignore b/.gitignore index bfa495423f..4e1d905174 100644 --- a/.gitignore +++ b/.gitignore @@ -17,4 +17,5 @@ modules/luci-compat/src/plural_formula.c modules/luci-compat/src/plural_formula.h docs/jsapi/* !docs/jsapi/README.md -**eslint.config** \ No newline at end of file +**eslint.config** +!eslint.config.mjs diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000000..87f38a6e44 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,13 @@ +import { defineConfig } from "eslint/config"; +import json from "@eslint/json"; + +export default defineConfig([ + { + files: ["**/*.json"], + ignores: ["package-lock.json"], + plugins: { json }, + language: "json/json", + extends: ["json/recommended"], + }, +]); +