├── .github ├── dependabot.yml ├── labels.yml ├── release-drafter.yml └── workflows │ ├── action_branch.yml │ ├── action_pull_request.yml │ ├── action_schedule.yml │ ├── lint.yml │ ├── params.yml │ ├── release-drafter.yml │ └── repository.yml ├── .gitignore ├── .yamllint ├── Dockerfiles └── Dockerfile.latest ├── LICENSE ├── Makefile ├── README.md └── tests ├── fail └── fail.php └── ok └── ok.php /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | --- 2 | version: 2 3 | updates: 4 | # Maintain dependencies for GitHub Actions 5 | - package-ecosystem: "github-actions" 6 | directory: "/" 7 | schedule: 8 | interval: "daily" 9 | -------------------------------------------------------------------------------- /.github/labels.yml: -------------------------------------------------------------------------------- 1 | # The labels in this file are automatically synced with the repository 2 | # using the micnncim/action-label-syncer action. 3 | --- 4 | - name: C-dependency 5 | color: 1abc9c 6 | description: "Category: Dependency" 7 | - name: PR-block 8 | color: 3498db 9 | description: "Pull Request: Do not merge" 10 | - name: PR-merge 11 | color: 3498db 12 | description: "Pull Request: Merge when ready" 13 | -------------------------------------------------------------------------------- /.github/release-drafter.yml: -------------------------------------------------------------------------------- 1 | --- 2 | name-template: '$RESOLVED_VERSION 🌈' 3 | tag-template: '$RESOLVED_VERSION' 4 | version-template: '$MAJOR.$MINOR' 5 | categories: 6 | - title: '🚀 Features' 7 | labels: 8 | - 'feature' 9 | - 'enhancement' 10 | - title: '🐛 Bug Fixes' 11 | labels: 12 | - 'fix' 13 | - 'bugfix' 14 | - 'bug' 15 | - title: '🧰 Maintenance' 16 | label: 'chore' 17 | change-template: '- $TITLE @$AUTHOR (#$NUMBER)' 18 | change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks. 19 | version-resolver: 20 | major: 21 | labels: 22 | - 'major' 23 | minor: 24 | labels: 25 | - 'minor' 26 | patch: 27 | labels: 28 | - 'patch' 29 | default: minor 30 | template: | 31 | ## Changes 32 | 33 | $CHANGES 34 | -------------------------------------------------------------------------------- /.github/workflows/action_branch.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # ------------------------------------------------------------------------------------------------- 4 | # Job Name 5 | # ------------------------------------------------------------------------------------------------- 6 | name: build 7 | 8 | 9 | # ------------------------------------------------------------------------------------------------- 10 | # When to run 11 | # ------------------------------------------------------------------------------------------------- 12 | on: 13 | push: 14 | paths: 15 | - 'Makefile' 16 | - 'Dockerfiles/**' 17 | - 'tests/**' 18 | - '.github/workflows/action*.yml' 19 | - '.github/workflows/params.yml' 20 | 21 | jobs: 22 | 23 | # (1/2) Determine repository params 24 | params: 25 | uses: ./.github/workflows/params.yml 26 | 27 | # (2/2) Build 28 | docker: 29 | needs: [params] 30 | uses: devilbox/github-actions/.github/workflows/docker-name-version-flavour-arch.yml@master 31 | with: 32 | enabled: true 33 | can_deploy: ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/release-') }} 34 | matrix: ${{ needs.params.outputs.matrix }} 35 | refs: ${{ needs.params.outputs.refs }} 36 | secrets: 37 | dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} 38 | dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} 39 | -------------------------------------------------------------------------------- /.github/workflows/action_pull_request.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # ------------------------------------------------------------------------------------------------- 4 | # Job Name 5 | # ------------------------------------------------------------------------------------------------- 6 | name: build 7 | 8 | 9 | # ------------------------------------------------------------------------------------------------- 10 | # When to run 11 | # ------------------------------------------------------------------------------------------------- 12 | on: 13 | pull_request: 14 | 15 | 16 | jobs: 17 | 18 | # (1/2) Determine repository params 19 | params: 20 | uses: ./.github/workflows/params.yml 21 | # Only run for forks (contributor) 22 | if: github.event.pull_request.head.repo.fork 23 | 24 | # (2/2) Build 25 | docker: 26 | needs: [params] 27 | uses: devilbox/github-actions/.github/workflows/docker-name-version-flavour-arch.yml@master 28 | with: 29 | enabled: true 30 | can_deploy: false 31 | matrix: ${{ needs.params.outputs.matrix }} 32 | refs: ${{ needs.params.outputs.refs }} 33 | secrets: 34 | dockerhub_username: "" 35 | dockerhub_password: "" 36 | -------------------------------------------------------------------------------- /.github/workflows/action_schedule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # ------------------------------------------------------------------------------------------------- 4 | # Job Name 5 | # ------------------------------------------------------------------------------------------------- 6 | name: nightly 7 | 8 | 9 | # ------------------------------------------------------------------------------------------------- 10 | # When to run 11 | # ------------------------------------------------------------------------------------------------- 12 | on: 13 | # Runs daily 14 | schedule: 15 | - cron: '0 0 * * *' 16 | 17 | 18 | jobs: 19 | 20 | # (1/2) Determine repository params 21 | params: 22 | uses: ./.github/workflows/params.yml 23 | 24 | # (2/2) Build 25 | docker: 26 | needs: [params] 27 | uses: devilbox/github-actions/.github/workflows/docker-name-version-flavour-arch.yml@master 28 | with: 29 | enabled: true 30 | can_deploy: true 31 | matrix: ${{ needs.params.outputs.matrix }} 32 | refs: ${{ needs.params.outputs.refs }} 33 | secrets: 34 | dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} 35 | dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} 36 | -------------------------------------------------------------------------------- /.github/workflows/lint.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # ------------------------------------------------------------------------------------------------- 4 | # Job Name 5 | # ------------------------------------------------------------------------------------------------- 6 | name: lint 7 | 8 | 9 | # ------------------------------------------------------------------------------------------------- 10 | # When to run 11 | # ------------------------------------------------------------------------------------------------- 12 | on: 13 | # Runs on Pull Requests 14 | pull_request: 15 | 16 | 17 | # ------------------------------------------------------------------------------------------------- 18 | # What to run 19 | # ------------------------------------------------------------------------------------------------- 20 | jobs: 21 | lint: 22 | uses: devilbox/github-actions/.github/workflows/lint-generic.yml@master 23 | -------------------------------------------------------------------------------- /.github/workflows/params.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # ------------------------------------------------------------------------------------------------- 4 | # Job Name 5 | # ------------------------------------------------------------------------------------------------- 6 | name: params 7 | 8 | 9 | # ------------------------------------------------------------------------------------------------- 10 | # Custom Variables 11 | # ------------------------------------------------------------------------------------------------- 12 | env: 13 | MATRIX: >- 14 | [ 15 | { 16 | "NAME": "pcf", 17 | "VERSION": [ 18 | "latest", 19 | 20 | "PCF-latest PHP-latest", 21 | "PCF-latest PHP-8.1", 22 | "PCF-latest PHP-8.0", 23 | "PCF-latest PHP-7.4", 24 | 25 | "PCF-3 PHP-latest", 26 | "PCF-3 PHP-8.1", 27 | "PCF-3 PHP-8.0", 28 | "PCF-3 PHP-7.4", 29 | 30 | "PCF-2 PHP-7.4", 31 | "PCF-2 PHP-7.3", 32 | "PCF-2 PHP-7.2", 33 | "PCF-2 PHP-7.1" 34 | ], 35 | "FLAVOUR": ["latest"], 36 | "ARCH": ["linux/amd64", "linux/386", "linux/arm64", "linux/arm/v7", "linux/arm/v6", "linux/ppc64le", "linux/s390x"] 37 | }, 38 | { 39 | "NAME": "pcf", 40 | "VERSION": [ 41 | "PCF-2 PHP-7.0", 42 | "PCF-2 PHP-5.6" 43 | ], 44 | "FLAVOUR": ["latest"], 45 | "ARCH": ["linux/amd64", "linux/386", "linux/arm64", "linux/arm/v7", "linux/arm/v6", "linux/ppc64le"] 46 | } 47 | ] 48 | 49 | 50 | # ------------------------------------------------------------------------------------------------- 51 | # When to run 52 | # ------------------------------------------------------------------------------------------------- 53 | on: 54 | workflow_call: 55 | outputs: 56 | matrix: 57 | description: "The determined version matrix" 58 | value: ${{ jobs.params.outputs.matrix }} 59 | refs: 60 | description: "The determined git ref matrix (only during scheduled run)" 61 | value: ${{ jobs.params.outputs.refs }} 62 | 63 | jobs: 64 | params: 65 | runs-on: ubuntu-latest 66 | 67 | outputs: 68 | matrix: ${{ steps.set-matrix.outputs.matrix }} 69 | refs: ${{ steps.set-refs.outputs.matrix }} 70 | 71 | steps: 72 | - name: "[Set-Output] Matrix" 73 | id: set-matrix 74 | run: | 75 | echo "matrix=$( echo '${{ env.MATRIX }}' | jq -M -c )" >> $GITHUB_OUTPUT 76 | 77 | - name: "[Set-Output] Matrix 'Refs' (master branch and latest tag)" 78 | id: set-refs 79 | uses: cytopia/git-ref-matrix-action@v0.1.13 80 | with: 81 | repository_default_branch: master 82 | branches: master 83 | num_latest_tags: 0 84 | if: github.event_name == 'schedule' 85 | 86 | - name: "[DEBUG] Show settings'" 87 | run: | 88 | echo 'Matrix' 89 | echo '--------------------' 90 | echo '${{ steps.set-matrix.outputs.matrix }}' 91 | echo 92 | 93 | echo 'Matrix: Refs' 94 | echo '--------------------' 95 | echo '${{ steps.set-matrix-refs.outputs.matrix }}' 96 | echo 97 | -------------------------------------------------------------------------------- /.github/workflows/release-drafter.yml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Release Drafter 3 | 4 | on: 5 | push: 6 | # branches to consider in the event; optional, defaults to all 7 | branches: 8 | - master 9 | 10 | jobs: 11 | update_release_draft: 12 | runs-on: ubuntu-latest 13 | steps: 14 | # Drafts your next Release notes as Pull Requests are merged into "master" 15 | - uses: release-drafter/release-drafter@v5 16 | with: 17 | publish: true 18 | env: 19 | GITHUB_TOKEN: ${{ secrets.RELEASE_DRAFTER_TOKEN }} 20 | -------------------------------------------------------------------------------- /.github/workflows/repository.yml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Repository 3 | 4 | on: 5 | push: 6 | branches: 7 | - master 8 | paths: 9 | - .github/labels.yml 10 | 11 | jobs: 12 | labels: 13 | name: Labels 14 | runs-on: ubuntu-latest 15 | 16 | steps: 17 | - name: Checkout code 18 | uses: actions/checkout@v3 19 | 20 | - name: Sync labels 21 | uses: micnncim/action-label-syncer@v1 22 | env: 23 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 24 | with: 25 | manifest: .github/labels.yml 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | Makefile.docker 2 | Makefile.lint 3 | *.cache 4 | -------------------------------------------------------------------------------- /.yamllint: -------------------------------------------------------------------------------- 1 | --- 2 | extends: default 3 | 4 | ignore: | 5 | .yamllint 6 | 7 | 8 | rules: 9 | truthy: 10 | allowed-values: ['true', 'false'] 11 | check-keys: False 12 | level: error 13 | line-length: disable 14 | -------------------------------------------------------------------------------- /Dockerfiles/Dockerfile.latest: -------------------------------------------------------------------------------- 1 | ARG PHP_IMG_TAG 2 | FROM php:${PHP_IMG_TAG} as builder 3 | 4 | # Install build dependencies 5 | RUN set -eux \ 6 | && apk add --no-cache \ 7 | ca-certificates \ 8 | # coreutils add 'sort -V' 9 | coreutils \ 10 | curl \ 11 | git \ 12 | && git clone https://github.com/FriendsOfPHP/PHP-CS-Fixer 13 | 14 | ARG PCF_VERSION 15 | RUN set -eux \ 16 | && cd PHP-CS-Fixer \ 17 | && if [ "${PCF_VERSION}" = "latest" ]; then \ 18 | VERSION="$( git tag | grep -E '^v?[.0-9]+$' | sort -V | tail -1 )"; \ 19 | else \ 20 | VERSION="$( git tag | grep -E "^v?${PCF_VERSION}\.[.0-9]+\$" | sort -V | tail -1 )"; \ 21 | fi \ 22 | && echo "Version: ${VERSION}" \ 23 | && curl -sS -L https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/download/${VERSION}/php-cs-fixer.phar -o /php-cs-fixer \ 24 | && chmod +x /php-cs-fixer \ 25 | && mv /php-cs-fixer /usr/bin/php-cs-fixer \ 26 | \ 27 | && php-cs-fixer --version 28 | 29 | 30 | ARG PHP_IMG_TAG 31 | FROM php:${PHP_IMG_TAG} as production 32 | LABEL \ 33 | maintainer="cytopia " \ 34 | repo="https://github.com/cytopia/docker-php-cs-fixer" 35 | 36 | COPY --from=builder /usr/bin/php-cs-fixer /usr/bin/php-cs-fixer 37 | ENV WORKDIR /data 38 | WORKDIR /data 39 | 40 | ENTRYPOINT ["php-cs-fixer"] 41 | CMD ["--version"] 42 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 cytopia 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | ifneq (,) 2 | .error This Makefile requires GNU Make. 3 | endif 4 | 5 | # Ensure additional Makefiles are present 6 | MAKEFILES = Makefile.docker Makefile.lint 7 | $(MAKEFILES): URL=https://raw.githubusercontent.com/devilbox/makefiles/master/$(@) 8 | $(MAKEFILES): 9 | @if ! (curl --fail -sS -o $(@) $(URL) || wget -O $(@) $(URL)); then \ 10 | echo "Error, curl or wget required."; \ 11 | echo "Exiting."; \ 12 | false; \ 13 | fi 14 | include $(MAKEFILES) 15 | 16 | # Set default Target 17 | .DEFAULT_GOAL := help 18 | 19 | DOCKER_PULL_VARIABLES = PHP_IMG_TAG=$(PHP_IMG_TAG) 20 | 21 | 22 | # ------------------------------------------------------------------------------------------------- 23 | # Default configuration 24 | # ------------------------------------------------------------------------------------------------- 25 | # Own vars 26 | TAG = latest 27 | 28 | # Makefile.docker overwrites 29 | NAME = pcf 30 | VERSION = latest 31 | IMAGE = cytopia/php-cs-fixer 32 | FLAVOUR = latest 33 | FILE = Dockerfile.${FLAVOUR} 34 | DIR = Dockerfiles 35 | 36 | # Extract PHP- and PCF- version from VERSION string 37 | PHP_IMG_TAG = "cli-alpine" 38 | ifeq ($(strip $(VERSION)),latest) 39 | PHP_VERSION = latest 40 | PCF_VERSION = latest 41 | PHP_IMG_TAG = "cli-alpine" 42 | else 43 | PHP_VERSION = $(subst PHP-,,$(shell echo "$(VERSION)" | grep -Eo 'PHP-([.0-9]+|latest)')) 44 | PCF_VERSION = $(subst PCF-,,$(shell echo "$(VERSION)" | grep -Eo 'PCF-([.0-9]+|latest)')) 45 | PHP_IMG_TAG = $(PHP_VERSION)-cli-alpine 46 | endif 47 | 48 | # Extract Image version 49 | ifeq ($(strip $(PHP_VERSION)),latest) 50 | PHP_IMG_TAG = "cli-alpine" 51 | endif 52 | 53 | # Building from master branch: Tag == 'latest' 54 | ifeq ($(strip $(TAG)),latest) 55 | ifeq ($(strip $(VERSION)),latest) 56 | DOCKER_TAG = $(FLAVOUR) 57 | else 58 | ifeq ($(strip $(FLAVOUR)),latest) 59 | ifeq ($(strip $(PHP_VERSION)),latest) 60 | DOCKER_TAG = $(PCF_VERSION) 61 | else 62 | DOCKER_TAG = $(PCF_VERSION)-php$(PHP_VERSION) 63 | endif 64 | else 65 | ifeq ($(strip $(PHP_VERSION)),latest) 66 | DOCKER_TAG = $(FLAVOUR)-$(PCF_VERSION) 67 | else 68 | DOCKER_TAG = $(FLAVOUR)-$(PCF_VERSION)-php$(PHP_VERSION) 69 | endif 70 | endif 71 | endif 72 | # Building from any other branch or tag: Tag == '' 73 | else 74 | ifeq ($(strip $(VERSION)),latest) 75 | ifeq ($(strip $(FLAVOUR)),latest) 76 | DOCKER_TAG = latest-$(TAG) 77 | else 78 | DOCKER_TAG = $(FLAVOUR)-latest-$(TAG) 79 | endif 80 | else 81 | ifeq ($(strip $(FLAVOUR)),latest) 82 | ifeq ($(strip $(PHP_VERSION)),latest) 83 | DOCKER_TAG = $(PCF_VERSION)-$(TAG) 84 | else 85 | DOCKER_TAG = $(PCF_VERSION)-php$(PHP_VERSION)-$(TAG) 86 | endif 87 | else 88 | ifeq ($(strip $(PHP_VERSION)),latest) 89 | DOCKER_TAG = $(FLAVOUR)-$(PCF_VERSION)-$(TAG) 90 | else 91 | DOCKER_TAG = $(FLAVOUR)-$(PCF_VERSION)-php$(PHP_VERSION)-$(TAG) 92 | endif 93 | endif 94 | endif 95 | endif 96 | 97 | # Makefile.lint overwrites 98 | FL_IGNORES = .git/,.github/,tests/ 99 | SC_IGNORES = .git/,.github/,tests/ 100 | JL_IGNORES = .git/,.github/,./tests/ 101 | 102 | 103 | # ------------------------------------------------------------------------------------------------- 104 | # Default Target 105 | # ------------------------------------------------------------------------------------------------- 106 | .PHONY: help 107 | help: 108 | @echo "lint Lint project files and repository" 109 | @echo 110 | @echo "build [ARCH=...] [TAG=...] Build Docker image" 111 | @echo "rebuild [ARCH=...] [TAG=...] Build Docker image without cache" 112 | @echo "push [ARCH=...] [TAG=...] Push Docker image to Docker hub" 113 | @echo 114 | @echo "manifest-create [ARCHES=...] [TAG=...] Create multi-arch manifest" 115 | @echo "manifest-push [TAG=...] Push multi-arch manifest" 116 | @echo 117 | @echo "test [ARCH=...] Test built Docker image" 118 | @echo 119 | 120 | 121 | # ------------------------------------------------------------------------------------------------- 122 | # Docker Targets 123 | # ------------------------------------------------------------------------------------------------- 124 | .PHONY: build 125 | build: ARGS+=--build-arg PCF_VERSION=$(PCF_VERSION) 126 | build: ARGS+=--build-arg PHP_IMG_TAG=$(PHP_IMG_TAG) 127 | build: docker-arch-build 128 | 129 | .PHONY: rebuild 130 | rebuild: ARGS+=--build-arg PCF_VERSION=$(PCF_VERSION) 131 | rebuild: ARGS+=--build-arg PHP_IMG_TAG=$(PHP_IMG_TAG) 132 | rebuild: docker-arch-rebuild 133 | 134 | .PHONY: push 135 | push: docker-arch-push 136 | 137 | 138 | # ------------------------------------------------------------------------------------------------- 139 | # Manifest Targets 140 | # ------------------------------------------------------------------------------------------------- 141 | .PHONY: manifest-create 142 | manifest-create: docker-manifest-create 143 | 144 | .PHONY: manifest-push 145 | manifest-push: docker-manifest-push 146 | 147 | 148 | # ------------------------------------------------------------------------------------------------- 149 | # Test Targets 150 | # ------------------------------------------------------------------------------------------------- 151 | .PHONY: test 152 | test: 153 | test: _test-php-cs-fixer-version 154 | test: _test-php-version 155 | test: _test-run 156 | 157 | .PHONY: _test-php-cs-fixer-version 158 | _test-php-cs-fixer-version: 159 | @echo "------------------------------------------------------------" 160 | @echo "- Testing correct phpcsf version" 161 | @echo "------------------------------------------------------------" 162 | @echo "Fetching latest version from GitHub"; \ 163 | if [ "$(PCF_VERSION)" = "latest" ]; then \ 164 | LATEST="$$( \ 165 | curl -L -sS https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases \ 166 | | tac | tac \ 167 | | grep -Eo 'tag/v?[.0-9]+?\.[.0-9]+"' \ 168 | | grep -Eo '[.0-9]+' \ 169 | | sort -V \ 170 | | tail -1 \ 171 | )"; \ 172 | echo "Testing for latest: $${LATEST}"; \ 173 | if ! docker run --rm --platform $(ARCH) $(IMAGE):$(DOCKER_TAG) --version | grep -E "^PHP CS Fixer (version)?$${LATEST}"; then \ 174 | echo "Failed"; \ 175 | exit 1; \ 176 | fi; \ 177 | else \ 178 | echo "Testing for tag: $(PCF_VERSION).x.x"; \ 179 | if ! docker run --rm --platform $(ARCH) $(IMAGE):$(DOCKER_TAG) --version | grep -E "^PHP CS Fixer (version[[:space:]])?$(PCF_VERSION)\.[.0-9]+"; then \ 180 | echo "Failed"; \ 181 | exit 1; \ 182 | fi; \ 183 | fi; \ 184 | echo "Success"; \ 185 | 186 | .PHONY: _test-php-version 187 | _test-php-version: _get-php-version 188 | @echo "------------------------------------------------------------" 189 | @echo "- Testing correct PHP version" 190 | @echo "------------------------------------------------------------" 191 | @if [ "$(PCF_VERSION)" = "1" ] && [ "$(PHP_VERSION)" = "latest" ]; then \ 192 | echo "Testing for tag: 7.1.x"; \ 193 | if ! docker run --rm --platform $(ARCH) --entrypoint=php $(IMAGE):$(DOCKER_TAG) --version | head -1 | grep -E "^PHP[[:space:]]+7\.1\.[.0-9]+[[:space:]]"; then \ 194 | echo "Failed"; \ 195 | exit 1; \ 196 | fi; \ 197 | else \ 198 | echo "Testing for tag: $(CURRENT_PHP_VERSION)"; \ 199 | if ! docker run --rm --platform $(ARCH) --entrypoint=php $(IMAGE):$(DOCKER_TAG) --version | head -1 | grep -E "^PHP[[:space:]]+$(CURRENT_PHP_VERSION)([.0-9]+)?"; then \ 200 | echo "Failed"; \ 201 | exit 1; \ 202 | fi; \ 203 | fi; \ 204 | echo "Success"; \ 205 | 206 | .PHONY: _test-run 207 | _test-run: 208 | @echo "------------------------------------------------------------" 209 | @echo "- Testing phpcsf (success)" 210 | @echo "------------------------------------------------------------" 211 | @if ! docker run --rm --platform $(ARCH) -v $(CURRENT_DIR)/tests/ok:/data $(IMAGE):$(DOCKER_TAG) fix --dry-run --diff .; then \ 212 | echo "Failed"; \ 213 | exit 1; \ 214 | fi; \ 215 | echo "Success"; 216 | @echo "------------------------------------------------------------" 217 | @echo "- Testing phpcsf (failure)" 218 | @echo "------------------------------------------------------------" 219 | @if docker run --rm --platform $(ARCH) -v $(CURRENT_DIR)/tests/fail:/data $(IMAGE):$(DOCKER_TAG) fix --dry-run --diff .; then \ 220 | echo "Failed"; \ 221 | exit 1; \ 222 | fi; \ 223 | echo "Success"; 224 | 225 | # Fetch latest available PHP version for cli-alpine 226 | .PHONY: _get-php-version 227 | _get-php-version: 228 | $(eval CURRENT_PHP_VERSION = $(shell \ 229 | if [ "$(PHP_VERSION)" = "latest" ]; then \ 230 | curl -L -sS https://hub.docker.com/api/content/v1/products/images/php \ 231 | | tac | tac \ 232 | | grep -Eo '`[.0-9]+-cli-alpine' \ 233 | | grep -Eo '[.0-9]+' \ 234 | | sort -u \ 235 | | tail -1; \ 236 | else \ 237 | echo $(PHP_VERSION); \ 238 | fi; \ 239 | )) 240 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Docker image for `php-cs-fixer` 2 | 3 | [![Tag](https://img.shields.io/github/tag/cytopia/docker-php-cs-fixer.svg)](https://github.com/cytopia/docker-php-cs-fixer/releases) 4 | [![](https://img.shields.io/badge/github-cytopia%2Fdocker--php--cs--fixer-red.svg)](https://github.com/cytopia/docker-php-cs-fixer "github.com/cytopia/docker-php-cs-fixer") 5 | [![License](https://img.shields.io/badge/license-MIT-%233DA639.svg)](https://opensource.org/licenses/MIT) 6 | 7 | [![lint](https://github.com/cytopia/docker-php-cs-fixer/workflows/lint/badge.svg)](https://github.com/cytopia/docker-php-cs-fixer/actions?query=workflow%3Alint) 8 | [![build](https://github.com/cytopia/docker-php-cs-fixer/workflows/build/badge.svg)](https://github.com/cytopia/docker-php-cs-fixer/actions?query=workflow%3Abuild) 9 | [![nightly](https://github.com/cytopia/docker-php-cs-fixer/workflows/nightly/badge.svg)](https://github.com/cytopia/docker-php-cs-fixer/actions?query=workflow%3Anightly) 10 | 11 | 12 | > #### All [#awesome-ci](https://github.com/topics/awesome-ci) Docker images 13 | > 14 | > [ansible-lint][alint-git-lnk] **•** 15 | > [ansible][ansible-git-lnk] **•** 16 | > [awesome-ci][aci-git-lnk] **•** 17 | > [bandit][bandit-git-lnk] **•** 18 | > [black][black-git-lnk] **•** 19 | > [checkmake][cm-git-lnk] **•** 20 | > [eslint][elint-git-lnk] **•** 21 | > [file-lint][flint-git-lnk] **•** 22 | > [gofmt][gfmt-git-lnk] **•** 23 | > [goimports][gimp-git-lnk] **•** 24 | > [golint][glint-git-lnk] **•** 25 | > [jsonlint][jlint-git-lnk] **•** 26 | > [kubeval][kubeval-git-lnk] **•** 27 | > [linkcheck][linkcheck-git-lnk] **•** 28 | > [mypy][mypy-git-lnk] **•** 29 | > [php-cs-fixer][pcsf-git-lnk] **•** 30 | > [phpcbf][pcbf-git-lnk] **•** 31 | > [phpcs][pcs-git-lnk] **•** 32 | > [phplint][plint-git-lnk] **•** 33 | > [pycodestyle][pycs-git-lnk] **•** 34 | > [pydocstyle][pyds-git-lnk] **•** 35 | > [pylint][pylint-git-lnk] **•** 36 | > [terraform-docs][tfdocs-git-lnk] **•** 37 | > [terragrunt-fmt][tgfmt-git-lnk] **•** 38 | > [terragrunt][tg-git-lnk] **•** 39 | > [yamlfmt][yfmt-git-lnk] **•** 40 | > [yamllint][ylint-git-lnk] 41 | 42 | View **[Dockerfiles](https://github.com/cytopia/docker-php-cs-fixer/blob/master/Dockerfiles/)** on GitHub. 43 | 44 | 45 | **Available Architectures:** `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`, `ppc64le`, `s390x` 46 | 47 | Tiny Alpine-based multistage-build dockerized version of [php-cs-fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer)[1]. 48 | The image is built nightly against multiple stable versions and pushed to Dockerhub. 49 | 50 | [1] Official project: https://github.com/FriendsOfPHP/PHP-CS-Fixer 51 | 52 | ## :whale: Available Docker image versions 53 | 54 | [![](https://img.shields.io/docker/pulls/cytopia/php-cs-fixer.svg)](https://hub.docker.com/r/cytopia/php-cs-fixer) 55 | [![Docker](https://badgen.net/badge/icon/:latest?icon=docker&label=cytopia/php-cs-fixer)](https://hub.docker.com/r/cytopia/php-cs-fixer) 56 | 57 | #### Rolling releaess 58 | 59 | The following Docker image tags are rolling releases and are built and updated every night. 60 | 61 | [![nightly](https://github.com/cytopia/docker-php-cs-fixer/workflows/nightly/badge.svg)](https://github.com/cytopia/docker-php-cs-fixer/actions?query=workflow%3Anightly) 62 | 63 | 64 | | Docker Tag | Git Ref | PHPCF | PHP | Available Architectures | 65 | |-----------------------|--------------|--------------|------------|----------------------------------------------| 66 | | **`latest`** | master | latest | latest | `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`, `ppc64le`, `s390x` | 67 | | `latest-php8.1` | master | latest | **`8.1`** | `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`, `ppc64le`, `s390x` | 68 | | `latest-php8.0` | master | latest | **`8.0`** | `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`, `ppc64le`, `s390x` | 69 | | `latest-php7.4` | master | latest | **`7.4`** | `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`, `ppc64le`, `s390x` | 70 | | | | | | | 71 | | **`3`** | master | **`3.x.x`** | latest | `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`, `ppc64le`, `s390x` | 72 | | `3-php8.1` | master | **`3.x.x`** | **`8.1`** | `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`, `ppc64le`, `s390x` | 73 | | `3-php8.0` | master | **`3.x.x`** | **`8.0`** | `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`, `ppc64le`, `s390x` | 74 | | `3-php7.4` | master | **`3.x.x`** | **`7.4`** | `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`, `ppc64le`, `s390x` | 75 | | | | | | | 76 | | **`2`** | master | **`2.x.x`** | latest | `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`, `ppc64le`, `s390x` | 77 | | `2-php8.1` | master | **`2.x.x`** | **`8.1`** | `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`, `ppc64le`, `s390x` | 78 | | `2-php8.0` | master | **`2.x.x`** | **`8.0`** | `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`, `ppc64le`, `s390x` | 79 | | `2-php7.4` | master | **`2.x.x`** | **`7.4`** | `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`, `ppc64le`, `s390x` | 80 | | `2-php7.3` | master | **`2.x.x`** | **`7.3`** | `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`, `ppc64le`, `s390x` | 81 | | `2-php7.2` | master | **`2.x.x`** | **`7.2`** | `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`, `ppc64le`, `s390x` | 82 | | `2-php7.1` | master | **`2.x.x`** | **`7.1`** | `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`, `ppc64le`, `s390x` | 83 | | `2-php7.0` | master | **`2.x.x`** | **`7.0`** | `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`, `ppc64le` | 84 | | `2-php5.6` | master | **`2.x.x`** | **`5.6`** | `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`, `ppc64le` | 85 | 86 | #### Point in time releases 87 | 88 | The following Docker image tags are built once and can be used for reproducible builds. Its version never changes so you will have to update tags in your pipelines from time to time in order to stay up-to-date. 89 | 90 | [![build](https://github.com/cytopia/docker-php-cs-fixer/workflows/build/badge.svg)](https://github.com/cytopia/docker-php-cs-fixer/actions?query=workflow%3Abuild) 91 | 92 | 93 | | Docker Tag | Git Ref | PHPCF | PHP | Available Architectures | 94 | |-----------------------|--------------|--------------|------------|----------------------------------------------| 95 | | **`latest-`** | git: `` | latest | latest | `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`, `ppc64le`, `s390x` | 96 | | `latest-php8.1-` | git: `` | latest | **`8.1`** | `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`, `ppc64le`, `s390x` | 97 | | `latest-php8.0-` | git: `` | latest | **`8.0`** | `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`, `ppc64le`, `s390x` | 98 | | `latest-php7.4-` | git: `` | latest | **`7.4`** | `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`, `ppc64le`, `s390x` | 99 | | | | | | | 100 | | **`3-`** | git: `` | **`3.x.x`** | latest | `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`, `ppc64le`, `s390x` | 101 | | `3-php8.1-` | git: `` | **`3.x.x`** | **`8.1`** | `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`, `ppc64le`, `s390x` | 102 | | `3-php8.0-` | git: `` | **`3.x.x`** | **`8.0`** | `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`, `ppc64le`, `s390x` | 103 | | `3-php7.4-` | git: `` | **`3.x.x`** | **`7.4`** | `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`, `ppc64le`, `s390x` | 104 | | | | | | | 105 | | **`2-`** | git: `` | **`2.x.x`** | latest | `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`, `ppc64le`, `s390x` | 106 | | `2-php8.1-` | git: `` | **`2.x.x`** | **`8.1`** | `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`, `ppc64le`, `s390x` | 107 | | `2-php8.0-` | git: `` | **`2.x.x`** | **`8.0`** | `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`, `ppc64le`, `s390x` | 108 | | `2-php7.4-` | git: `` | **`2.x.x`** | **`7.4`** | `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`, `ppc64le`, `s390x` | 109 | | `2-php7.3-` | git: `` | **`2.x.x`** | **`7.3`** | `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`, `ppc64le`, `s390x` | 110 | | `2-php7.2-` | git: `` | **`2.x.x`** | **`7.2`** | `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`, `ppc64le`, `s390x` | 111 | | `2-php7.1-` | git: `` | **`2.x.x`** | **`7.1`** | `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`, `ppc64le`, `s390x` | 112 | | `2-php7.0-` | git: `` | **`2.x.x`** | **`7.0`** | `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`, `ppc64le` | 113 | | `2-php5.6-` | git: `` | **`2.x.x`** | **`5.6`** | `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`, `ppc64le` | 114 | 115 | > Where `` refers to the chosen git tag from this repository. 116 | 117 | 118 | ## :open_file_folder: Docker mounts 119 | 120 | The working directory inside the Docker container is **`/data/`** and should be mounted locally. 121 | 122 | 123 | ## :computer: Usage 124 | 125 | ### Generic 126 | ```bash 127 | $ docker run --rm cytopia/php-cs-fixer --help 128 | 129 | Usage: 130 | list [options] [--] [] 131 | 132 | Arguments: 133 | namespace The namespace name 134 | 135 | Options: 136 | --raw To output raw command list 137 | --format=FORMAT The output format (txt, xml, json, or md) [default: "txt"] 138 | 139 | Help: 140 | The list command lists all commands: 141 | 142 | php /usr/bin/php-cs-fixer list 143 | 144 | You can also display the commands for a specific namespace: 145 | 146 | php /usr/bin/php-cs-fixer list test 147 | 148 | You can also output the information in other formats by using the --format option: 149 | 150 | php /usr/bin/php-cs-fixer list --format=xml 151 | 152 | It's also possible to get raw list of commands (useful for embedding command runner): 153 | 154 | php /usr/bin/php-cs-fixer list --raw 155 | ``` 156 | 157 | ### Dry-run 158 | 159 | ```bash 160 | $ docker run --rm -v $(pwd):/data cytopia/php-cs-fixer fix --dry-run --diff . 161 | ``` 162 | ```diff 163 | Loaded config default. 164 | Using cache file ".php_cs.cache". 165 | 1) fail.php 166 | ---------- begin diff ---------- 167 | --- Original 168 | +++ New 169 | @@ @@ 170 | [1]** | 248 | | [goimports][gimp-git-lnk] | [![gimp-hub-img]][gimp-hub-lnk] | Go | Format Go source code **[1]** | 249 | | [golint][glint-git-lnk] | [![glint-hub-img]][glint-hub-lnk] | Go | Lint Go code | 250 | | [eslint][elint-git-lnk] | [![elint-hub-img]][elint-hub-lnk] | Javascript | Lint Javascript code | 251 | | [jsonlint][jlint-git-lnk] | [![jlint-hub-img]][jlint-hub-lnk] | JSON | Lint JSON files **[1]** | 252 | | [kubeval][kubeval-git-lnk] | [![kubeval-hub-img]][kubeval-hub-lnk] | K8s | Lint Kubernetes files | 253 | | [checkmake][cm-git-lnk] | [![cm-hub-img]][cm-hub-lnk] | Make | Lint Makefiles | 254 | | [phpcbf][pcbf-git-lnk] | [![pcbf-hub-img]][pcbf-hub-lnk] | PHP | PHP Code Beautifier and Fixer | 255 | | [phpcs][pcs-git-lnk] | [![pcs-hub-img]][pcs-hub-lnk] | PHP | PHP Code Sniffer | 256 | | [phplint][plint-git-lnk] | [![plint-hub-img]][plint-hub-lnk] | PHP | PHP Code Linter **[1]** | 257 | | [php-cs-fixer][pcsf-git-lnk] | [![pcsf-hub-img]][pcsf-hub-lnk] | PHP | PHP Coding Standards Fixer | 258 | | [bandit][bandit-git-lnk] | [![bandit-hub-img]][bandit-hub-lnk] | Python | A security linter from PyCQA 259 | | [black][black-git-lnk] | [![black-hub-img]][black-hub-lnk] | Python | The uncompromising Python code formatter | 260 | | [mypy][mypy-git-lnk] | [![mypy-hub-img]][mypy-hub-lnk] | Python | Static source code analysis | 261 | | [pycodestyle][pycs-git-lnk] | [![pycs-hub-img]][pycs-hub-lnk] | Python | Python style guide checker | 262 | | [pydocstyle][pyds-git-lnk] | [![pyds-hub-img]][pyds-hub-lnk] | Python | Python docstyle checker | 263 | | [pylint][pylint-git-lnk] | [![pylint-hub-img]][pylint-hub-lnk] | Python | Python source code, bug and quality checker | 264 | | [terraform-docs][tfdocs-git-lnk] | [![tfdocs-hub-img]][tfdocs-hub-lnk] | Terraform | Terraform doc generator (TF 0.12 ready) **[1]** | 265 | | [terragrunt][tg-git-lnk] | [![tg-hub-img]][tg-hub-lnk] | Terraform | Terragrunt and Terraform | 266 | | [terragrunt-fmt][tgfmt-git-lnk] | [![tgfmt-hub-img]][tgfmt-hub-lnk] | Terraform | `terraform fmt` for Terragrunt files **[1]** | 267 | | [yamlfmt][yfmt-git-lnk] | [![yfmt-hub-img]][yfmt-hub-lnk] | Yaml | Format Yaml files **[1]** | 268 | | [yamllint][ylint-git-lnk] | [![ylint-hub-img]][ylint-hub-lnk] | Yaml | Lint Yaml files | 269 | 270 | > **[1]** Uses a shell wrapper to add **enhanced functionality** not available by original project. 271 | 272 | [aci-git-lnk]: https://github.com/cytopia/awesome-ci 273 | [aci-hub-img]: https://img.shields.io/docker/pulls/cytopia/awesome-ci.svg 274 | [aci-hub-lnk]: https://hub.docker.com/r/cytopia/awesome-ci 275 | 276 | [flint-git-lnk]: https://github.com/cytopia/docker-file-lint 277 | [flint-hub-img]: https://img.shields.io/docker/pulls/cytopia/file-lint.svg 278 | [flint-hub-lnk]: https://hub.docker.com/r/cytopia/file-lint 279 | 280 | [linkcheck-git-lnk]: https://github.com/cytopia/docker-linkcheck 281 | [linkcheck-hub-img]: https://img.shields.io/docker/pulls/cytopia/linkcheck.svg 282 | [linkcheck-hub-lnk]: https://hub.docker.com/r/cytopia/linkcheck 283 | 284 | [jlint-git-lnk]: https://github.com/cytopia/docker-jsonlint 285 | [jlint-hub-img]: https://img.shields.io/docker/pulls/cytopia/jsonlint.svg 286 | [jlint-hub-lnk]: https://hub.docker.com/r/cytopia/jsonlint 287 | 288 | [ansible-git-lnk]: https://github.com/cytopia/docker-ansible 289 | [ansible-hub-img]: https://img.shields.io/docker/pulls/cytopia/ansible.svg 290 | [ansible-hub-lnk]: https://hub.docker.com/r/cytopia/ansible 291 | 292 | [alint-git-lnk]: https://github.com/cytopia/docker-ansible-lint 293 | [alint-hub-img]: https://img.shields.io/docker/pulls/cytopia/ansible-lint.svg 294 | [alint-hub-lnk]: https://hub.docker.com/r/cytopia/ansible-lint 295 | 296 | [kubeval-git-lnk]: https://github.com/cytopia/docker-kubeval 297 | [kubeval-hub-img]: https://img.shields.io/docker/pulls/cytopia/kubeval.svg 298 | [kubeval-hub-lnk]: https://hub.docker.com/r/cytopia/kubeval 299 | 300 | [gfmt-git-lnk]: https://github.com/cytopia/docker-gofmt 301 | [gfmt-hub-img]: https://img.shields.io/docker/pulls/cytopia/gofmt.svg 302 | [gfmt-hub-lnk]: https://hub.docker.com/r/cytopia/gofmt 303 | 304 | [gimp-git-lnk]: https://github.com/cytopia/docker-goimports 305 | [gimp-hub-img]: https://img.shields.io/docker/pulls/cytopia/goimports.svg 306 | [gimp-hub-lnk]: https://hub.docker.com/r/cytopia/goimports 307 | 308 | [glint-git-lnk]: https://github.com/cytopia/docker-golint 309 | [glint-hub-img]: https://img.shields.io/docker/pulls/cytopia/golint.svg 310 | [glint-hub-lnk]: https://hub.docker.com/r/cytopia/golint 311 | 312 | [elint-git-lnk]: https://github.com/cytopia/docker-eslint 313 | [elint-hub-img]: https://img.shields.io/docker/pulls/cytopia/eslint.svg 314 | [elint-hub-lnk]: https://hub.docker.com/r/cytopia/eslint 315 | 316 | [cm-git-lnk]: https://github.com/cytopia/docker-checkmake 317 | [cm-hub-img]: https://img.shields.io/docker/pulls/cytopia/checkmake.svg 318 | [cm-hub-lnk]: https://hub.docker.com/r/cytopia/checkmake 319 | 320 | [pcbf-git-lnk]: https://github.com/cytopia/docker-phpcbf 321 | [pcbf-hub-img]: https://img.shields.io/docker/pulls/cytopia/phpcbf.svg 322 | [pcbf-hub-lnk]: https://hub.docker.com/r/cytopia/phpcbf 323 | 324 | [pcs-git-lnk]: https://github.com/cytopia/docker-phpcs 325 | [pcs-hub-img]: https://img.shields.io/docker/pulls/cytopia/phpcs.svg 326 | [pcs-hub-lnk]: https://hub.docker.com/r/cytopia/phpcs 327 | 328 | [plint-git-lnk]: https://github.com/cytopia/docker-phplint 329 | [plint-hub-img]: https://img.shields.io/docker/pulls/cytopia/phplint.svg 330 | [plint-hub-lnk]: https://hub.docker.com/r/cytopia/phplint 331 | 332 | [pcsf-git-lnk]: https://github.com/cytopia/docker-php-cs-fixer 333 | [pcsf-hub-img]: https://img.shields.io/docker/pulls/cytopia/php-cs-fixer.svg 334 | [pcsf-hub-lnk]: https://hub.docker.com/r/cytopia/php-cs-fixer 335 | 336 | [bandit-git-lnk]: https://github.com/cytopia/docker-bandit 337 | [bandit-hub-img]: https://img.shields.io/docker/pulls/cytopia/bandit.svg 338 | [bandit-hub-lnk]: https://hub.docker.com/r/cytopia/bandit 339 | 340 | [black-git-lnk]: https://github.com/cytopia/docker-black 341 | [black-hub-img]: https://img.shields.io/docker/pulls/cytopia/black.svg 342 | [black-hub-lnk]: https://hub.docker.com/r/cytopia/black 343 | 344 | [mypy-git-lnk]: https://github.com/cytopia/docker-mypy 345 | [mypy-hub-img]: https://img.shields.io/docker/pulls/cytopia/mypy.svg 346 | [mypy-hub-lnk]: https://hub.docker.com/r/cytopia/mypy 347 | 348 | [pycs-git-lnk]: https://github.com/cytopia/docker-pycodestyle 349 | [pycs-hub-img]: https://img.shields.io/docker/pulls/cytopia/pycodestyle.svg 350 | [pycs-hub-lnk]: https://hub.docker.com/r/cytopia/pycodestyle 351 | 352 | [pyds-git-lnk]: https://github.com/cytopia/docker-pydocstyle 353 | [pyds-hub-img]: https://img.shields.io/docker/pulls/cytopia/pydocstyle.svg 354 | [pyds-hub-lnk]: https://hub.docker.com/r/cytopia/pydocstyle 355 | 356 | [pylint-git-lnk]: https://github.com/cytopia/docker-pylint 357 | [pylint-hub-img]: https://img.shields.io/docker/pulls/cytopia/pylint.svg 358 | [pylint-hub-lnk]: https://hub.docker.com/r/cytopia/pylint 359 | 360 | [tfdocs-git-lnk]: https://github.com/cytopia/docker-terraform-docs 361 | [tfdocs-hub-img]: https://img.shields.io/docker/pulls/cytopia/terraform-docs.svg 362 | [tfdocs-hub-lnk]: https://hub.docker.com/r/cytopia/terraform-docs 363 | 364 | [tg-git-lnk]: https://github.com/cytopia/docker-terragrunt 365 | [tg-hub-img]: https://img.shields.io/docker/pulls/cytopia/terragrunt.svg 366 | [tg-hub-lnk]: https://hub.docker.com/r/cytopia/terragrunt 367 | 368 | [tgfmt-git-lnk]: https://github.com/cytopia/docker-terragrunt-fmt 369 | [tgfmt-hub-img]: https://img.shields.io/docker/pulls/cytopia/terragrunt-fmt.svg 370 | [tgfmt-hub-lnk]: https://hub.docker.com/r/cytopia/terragrunt-fmt 371 | 372 | [yfmt-git-lnk]: https://github.com/cytopia/docker-yamlfmt 373 | [yfmt-hub-img]: https://img.shields.io/docker/pulls/cytopia/yamlfmt.svg 374 | [yfmt-hub-lnk]: https://hub.docker.com/r/cytopia/yamlfmt 375 | 376 | [ylint-git-lnk]: https://github.com/cytopia/docker-yamllint 377 | [ylint-hub-img]: https://img.shields.io/docker/pulls/cytopia/yamllint.svg 378 | [ylint-hub-lnk]: https://hub.docker.com/r/cytopia/yamllint 379 | 380 | 381 | ### Makefiles 382 | 383 | Visit **[cytopia/makefiles](https://github.com/cytopia/makefiles)** for dependency-less, seamless project integration and minimum required best-practice code linting for CI. 384 | The provided Makefiles will only require GNU Make and Docker itself removing the need to install anything else. 385 | 386 | 387 | ## :page_facing_up: License 388 | 389 | 390 | **[MIT License](LICENSE)** 391 | 392 | Copyright (c) 2019 [cytopia](https://github.com/cytopia) 393 | -------------------------------------------------------------------------------- /tests/fail/fail.php: -------------------------------------------------------------------------------- 1 | 9 | * @copyright 2019 cytopia 10 | * @license MIT, https://opensource.org/licenses/MIT 11 | * 12 | * @link https://github.com/cytopia/docker-phpcs 13 | */ 14 | echo 'test'; 15 | --------------------------------------------------------------------------------