From 3fc90ae192b28733dbe8a97c869a6e0c2409d1f5 Mon Sep 17 00:00:00 2001 From: Luciano Righetti Date: Tue, 6 Jun 2023 11:41:18 +0200 Subject: [PATCH] add: install pre-commit hook with composer install --- composer.json | 9 +++++--- scripts/pre-commit/install-pre-commit.sh | 3 +++ scripts/pre-commit/pre-commit | 29 ++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 scripts/pre-commit/install-pre-commit.sh create mode 100644 scripts/pre-commit/pre-commit diff --git a/composer.json b/composer.json index 0351706d0..f36937297 100644 --- a/composer.json +++ b/composer.json @@ -14,7 +14,7 @@ "cakephp/plugin-installer": "^1.2", "erusev/parsedown": "^1.7", "mobiledetect/mobiledetectlib": "^2.8", - "pear/crypt_gpg": "^1.6" + "pear/crypt_gpg": "^1.6" }, "require-dev": { "cakephp/bake": "^2.0.3", @@ -48,7 +48,10 @@ } }, "scripts": { - "post-install-cmd": "App\\Console\\Installer::postInstall", + "post-install-cmd": [ + "App\\Console\\Installer::postInstall", + "bash scripts/pre-commit/install-pre-commit.sh" + ], "post-create-project-cmd": "App\\Console\\Installer::postInstall", "check": [ "@test", @@ -77,4 +80,4 @@ } }, "minimum-stability": "dev" -} +} \ No newline at end of file diff --git a/scripts/pre-commit/install-pre-commit.sh b/scripts/pre-commit/install-pre-commit.sh new file mode 100644 index 000000000..44971d8db --- /dev/null +++ b/scripts/pre-commit/install-pre-commit.sh @@ -0,0 +1,3 @@ +#! /usr/bin/env bash +cp scripts/pre-commit/pre-commit .git/hooks/pre-commit +chmod +x .git/hooks/pre-commit \ No newline at end of file diff --git a/scripts/pre-commit/pre-commit b/scripts/pre-commit/pre-commit new file mode 100644 index 000000000..b0292ea66 --- /dev/null +++ b/scripts/pre-commit/pre-commit @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +C_RESET='\e[0m' +C_RED='\e[31m' +C_GREEN='\e[32m' +C_YELLOW='\e[33m' + +function __run() { #(step, name, cmd) + local color output exitcode + + printf "${C_YELLOW}[%s]${C_RESET} %-20s" "$1" "$2" + output=$(eval "$3" 2>&1) + exitcode=$? + + if [[ 0 == $exitcode || 130 == $exitcode ]]; then + echo -e "${C_GREEN}OK!${C_RESET}" + else + echo -e "${C_RED}NOK!${C_RESET}\n\n$output" + exit 1 + fi +} + +modified="git diff --diff-filter=M --name-only --cached | grep \".php$\"" +phpcs="vendor/bin/phpcs --report=code --colors --report-width=80" +phpcbf="vendor/bin/phpcbf" + +__run "1/3" "code beautifier" "${modified} | xargs -r ${phpcbf}" +__run "2/3" "code sniffer" "${modified} | xargs -r ${phpcs}" +__run "3/3" "phpstan" "${modified} | xargs -r vendor/bin/phpstan analyse"