From f1e0058e672c44f1b760cfad8d6112b56c3f07df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Tue, 10 Jun 2025 03:55:44 +0200 Subject: [PATCH] tools: Add run-eslint.sh script The script is a small wrapper around the `ci-run-eslint` package from World/javascript, which is a generalized and improved version of the .gitlab-ci/run-eslint script from gnome-shell. It only requires `npm` to be available, so it simplifies running eslint locally quite a lot Part-of: --- .gitattributes | 4 ++++ .gitignore | 2 ++ REUSE.toml | 10 ++++++++++ tools/package-lock.json | Bin 0 -> 61024 bytes tools/package.json | 14 ++++++++++++++ tools/run-eslint.sh | 8 ++++++++ 6 files changed, 38 insertions(+) create mode 100644 .gitattributes create mode 100644 tools/package-lock.json create mode 100644 tools/package.json create mode 100755 tools/run-eslint.sh diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..b18df802 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,4 @@ +# SPDX-FileCopyrightText: No rights reserved +# SPDX-License-Identifier: CC0-1.0 + +package-lock.json -diff diff --git a/.gitignore b/.gitignore index 607ad6ff..be94ff04 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,6 @@ zip-files/ *.patch *.sw? .buildconfig +.eslintcache .vscode +node_modules diff --git a/REUSE.toml b/REUSE.toml index 9a5ff985..6385d86b 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -29,3 +29,13 @@ SPDX-License-Identifier = "GPL-2.0-or-later" path = ["po/LINGUAS", "po/POTFILES.in"] SPDX-FileCopyrightText = "No rights reserved" SPDX-License-Identifier = "CC0-1.0" + +[[annotations]] +path = "tools/package.json" +SPDX-FileCopyrightText = "2025 Florian Müllner " +SPDX-License-Identifier = "MIT OR LGPL-2.0-or-later" + +[[annotations]] +path = "**package-lock.json" +SPDX-FileCopyrightText = "No rights reserved" +SPDX-License-Identifier = "CC0-1.0" diff --git a/tools/package-lock.json b/tools/package-lock.json new file mode 100644 index 0000000000000000000000000000000000000000..5c3647450c37ac3c1ef8be91c61d1105461b8599 GIT binary patch literal 61024 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 eHfci8-ed(o!_imx?H^<@fnNFdfBE-+`Tqb4 +# SPDX-FileCopyrightText: 2025 Florian Müllner + +cd $(dirname -- "$0") +[ ! -d node_modules ] && npm clean-install +npm run lint -- "$@"