diff --git a/.editorconfig b/.editorconfig index 21985b5..c6b90d4 100644 --- a/.editorconfig +++ b/.editorconfig @@ -8,3 +8,7 @@ end_of_line = lf charset = utf-8 trim_trailing_whitespace = false insert_final_newline = true + +[*.{bat,cmd}] +end_of_line = crlf +charset = latin1 diff --git a/.travis.yml b/.travis.yml index f8c318a..afa3cde 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,7 +24,7 @@ jobs: language: go go: '1.13' before_script: GO111MODULE=on go install mvdan.cc/sh/v3/cmd/shfmt - script: shfmt -d -s -ln posix -i 0 -ci -kp install-php-extensions scripts/common scripts/travisci-test-extensions scripts/travisci-update-readme scripts/update-readme + script: shfmt -d -s -ln posix -i 0 -ci -kp install-php-extensions scripts/common scripts/lint scripts/travisci-test-extensions scripts/travisci-update-readme scripts/update-readme - <<: *test-extensions-job-template name: Test extensions on Alpine 3.7 diff --git a/README.md b/README.md index 69ac319..de913fc 100644 --- a/README.md +++ b/README.md @@ -144,6 +144,10 @@ Some extension has special requirements: ## How to contribute +### Formatting code + +Before submitting any pull request, be sure to execute the `lint` script in the `scripts` directory (or `lint.bat` on Windows). + ### Adding support to a new PHP extension? 1. change the `install-php-extensions` script diff --git a/scripts/Dockerfile-shfmt b/scripts/Dockerfile-shfmt new file mode 100644 index 0000000..5decefa --- /dev/null +++ b/scripts/Dockerfile-shfmt @@ -0,0 +1,3 @@ +FROM golang + +RUN go get github.com/mvdan/sh/cmd/shfmt diff --git a/scripts/lint b/scripts/lint new file mode 100755 index 0000000..3499919 --- /dev/null +++ b/scripts/lint @@ -0,0 +1,30 @@ +#!/bin/sh + +set -o errexit +set -o nounset + +if ! docker --version >/dev/null 2>/dev/null; then + printf 'Docker is not installed, or it is not running\n' >&2 + exit 1 +fi + +#SRC_DIR="$(CDPATH= cd -- "$(dirname -- "$0")" && cd .. pwd)" + +if ! docker build -t docker-php-extension-installer-shfmt:latest -f scripts/Dockerfile-shfmt -q .; then + printf 'ERROR!' >&2 + exit 1 +fi + +fix() { + printf 'Fixing %s... ' "$1" + if docker run --rm -v "$SRC_DIR:/src" -w /src docker-php-extension-installer-shfmt:latest shfmt -s -ln posix -i 0 -ci -kp -w "$1"; then + printf 'done.\n' + fi +} + +fix install-php-extensions +fix scripts/common +fix scripts/lint +fix scripts/travisci-test-extensions +fix scripts/travisci-update-readme +fix scripts/update-readme diff --git a/scripts/lint.bat b/scripts/lint.bat new file mode 100644 index 0000000..19d9e55 --- /dev/null +++ b/scripts/lint.bat @@ -0,0 +1,34 @@ +@echo off +setlocal + +docker --version >NUL 2>NUL +if errorlevel 1 goto :no-docker + +cd /d "%~dp0.." +if errorlevel 1 goto err +set SRC_DIR=%CD% + +docker build -t docker-php-extension-installer-shfmt:latest -f scripts\Dockerfile-shfmt -q . +if errorlevel 1 goto :err + +call :fix install-php-extensions +call :fix scripts/common +call :fix scripts/lint +call :fix scripts/travisci-test-extensions +call :fix scripts/travisci-update-readme +call :fix scripts/update-readme +goto :eof + +:no-docker +echo Docker is not installed, or it's not running >&2 +goto :eof + +:err +echo ERROR! >&2 +goto :eof + +:fix +echo|set /p="Fixing %1... " +docker run --rm -v "%SRC_DIR%:/src" -w /src docker-php-extension-installer-shfmt:latest shfmt -s -ln posix -i 0 -ci -kp -w %1 +if not errorlevel 1 echo done. +exit /b 0