chore: use git hooks for linter/formatter and signed-off/conventional-commits (#2847)

* chore: use pre-commit hook for linter/formatter

fixes https://github.com/containers/podman-desktop/issues/2845

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
This commit is contained in:
Florent BENOIT 2023-06-16 10:40:42 +02:00 committed by GitHub
parent 79a9644a39
commit 6964c15543
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 734 additions and 16 deletions

46
.husky/commit-msg Executable file
View file

@ -0,0 +1,46 @@
#!/bin/sh
#!/usr/bin/env sh
#
# Copyright (C) 2023 Red Hat, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
. "$(dirname -- "$0")/_/husky.sh"
set -u
# avoid [[ which is not POSIX sh.
if test "$#" != 1; then
echo "$0 requires an argument."
exit 1
fi
if test ! -f "$1"; then
echo "file does not exist: $1"
exit 1
fi
yarn commitlint --edit "$1"
SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
grep -qs "^$SOB" "$1" || echo "$SOB" >>"$1"
# Catches duplicate Signed-off-by lines.
test "" = "$(grep '^Signed-off-by: ' "$1" |
sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || {
echo >&2 Duplicate Signed-off-by lines.
exit 1
}

21
.husky/pre-commit Executable file
View file

@ -0,0 +1,21 @@
#!/usr/bin/env sh
#
# Copyright (C) 2023 Red Hat, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
. "$(dirname -- "$0")/_/husky.sh"
yarn lint-staged

1
commitlint.config.cjs Normal file
View file

@ -0,0 +1 @@
module.exports = { extends: ['@commitlint/config-conventional'] };

View file

@ -70,9 +70,19 @@
"typecheck:renderer": "npm run build:preload:types && tsc --noEmit -p packages/renderer/tsconfig.json", "typecheck:renderer": "npm run build:preload:types && tsc --noEmit -p packages/renderer/tsconfig.json",
"typecheck": "npm run typecheck:main && npm run typecheck:preload && npm run typecheck:renderer && npm run typecheck:preload-dd-extension", "typecheck": "npm run typecheck:main && npm run typecheck:preload && npm run typecheck:renderer && npm run typecheck:preload-dd-extension",
"website:build": "cd website && yarn run docusaurus build", "website:build": "cd website && yarn run docusaurus build",
"website:dev": "cd website && yarn run docusaurus start" "website:dev": "cd website && yarn run docusaurus start",
"prepare": "husky install"
},
"lint-staged": {
"*.{js,ts,tsx,svelte}": [
"eslint --cache --fix",
"prettier --write"
],
"*.{md,css,json}": "prettier --write"
}, },
"devDependencies": { "devDependencies": {
"@commitlint/cli": "^17.6.5",
"@commitlint/config-conventional": "^17.6.5",
"@playwright/test": "^1.35.0", "@playwright/test": "^1.35.0",
"@rollup/plugin-commonjs": "^25.0.1", "@rollup/plugin-commonjs": "^25.0.1",
"@rollup/plugin-json": "^6.0.0", "@rollup/plugin-json": "^6.0.0",
@ -100,6 +110,8 @@
"eslint-plugin-import": "^2.27.5", "eslint-plugin-import": "^2.27.5",
"eslint-plugin-redundant-undefined": "^0.4.0", "eslint-plugin-redundant-undefined": "^0.4.0",
"eslint-plugin-sonarjs": "^0.19.0", "eslint-plugin-sonarjs": "^0.19.0",
"husky": "^8.0.0",
"lint-staged": "^13.2.2",
"nock": "^13.3.1", "nock": "^13.3.1",
"playwright": "1.35.0", "playwright": "1.35.0",
"postcss-import": "^15.1.0", "postcss-import": "^15.1.0",

668
yarn.lock

File diff suppressed because it is too large Load diff