diff --git a/.travis.yml b/.travis.yml
index 3638a69..3e0eb06 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -2,30 +2,24 @@ language: php
matrix:
include:
- - php: 7.0
- - php: 7.1
- - php: nightly
+ - dist: focal
+ php: 8.2
+ env: LIBONIG_INSTALL=1
fast_finish: true
- allow_failures:
- - php: nightly
- - php: 7.0
-
-before_script:
+before_install:
+ - if [ -n "$LIBONIG_INSTALL" ]; then sudo apt-get install libonig5; fi
- travis_retry composer self-update
- travis_retry composer update --prefer-dist
-script:
- - vendor/bin/phpunit --testsuite=sniff_tests
-
deploy:
provider: script
script: scripts/deploy.sh
skip_cleanup: false
on:
tags: true
- condition: "$TRAVIS_PHP_VERSION = 7.1"
+ condition: "$TRAVIS_PHP_VERSION = 8.2"
cache:
directories:
diff --git a/composer.json b/composer.json
index f7e1e1a..73e0f24 100644
--- a/composer.json
+++ b/composer.json
@@ -1,25 +1,27 @@
{
- "name": "crazyfactory/sniffs",
- "description": "Crazy Factory default code styles to be used with Squizlabs' code sniffer.",
- "license": "proprietary",
- "require": {
- "symplify/easy-coding-standard": "^2.2.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.0"
- },
- "autoload": {
- "psr-4": {
- "CrazyFactory\\Sniffs\\": "src/CrazyFactory/Sniffs/"
- }
- },
- "config": {
- "optimize-autoloader": true,
- "preferred-install": {
- "*": "dist"
- }
+ "name": "crazyfactory/sniffs",
+ "description": "Crazy Factory default code styles to be used with Squizlabs' code sniffer.",
+ "license": "proprietary",
+ "require": {
+ "PHP": "^8.2",
+ "symplify/easy-coding-standard": "^11.3"
+ },
+ "require-dev": {
+ "squizlabs/php_codesniffer": "^3.7",
+ "phpunit/phpunit": "^10.0"
+ },
+ "autoload": {
+ "psr-4": {
+ "CrazyFactory\\Sniffs\\": "src/CrazyFactory/Sniffs/"
+ }
+ },
+ "config": {
+ "optimize-autoloader": true,
+ "preferred-install": {
+ "*": "dist"
},
- "scripts": {
- "test": "phpunit -c phpunit.xml"
+ "platform": {
+ "php": "8.2.3"
}
+ }
}
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000..d0619cf
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,52 @@
+version: '3.4'
+
+services:
+ php-sniff-php-fpm:
+ container_name: php-sniff-php-fpm
+ build:
+ context: ./
+ dockerfile: ./docker/php/Dockerfile
+ target: debugging
+ ports:
+ - "30112:80"
+ volumes:
+ - ./:/var/www/project
+ environment:
+ IN_DOCKER: 1
+
+ PHP_INI_UPLOAD_MAX_FILESIZE: 100M
+ PHP_INI_POST_MAX_SIZE: 108M
+ PHP_INI_MAX_FILE_UPLOADS: 200
+ INI_EXPOSE_PHP: 0
+
+ INI_MAX_EXECUTION_TIME: 0
+ INI_MEMORY_LIMIT: 2G
+
+ INI_ERROR_LOG: .debug/php-errors.log
+ INI_LOG_ERRORS: 1
+ INI_DISPLAY_ERRORS: "E_ALL & ~E_DEPRECATED & ~E_NOTICE"
+ INI_DISPLAY_STARTUP_ERRORS: 1
+ INI_ERROR_REPORTING: 1
+ INI_HTML_ERRORS: 0
+
+ # https://xdebug.org/docs/all_settings#mode
+ # INI_XDEBUG_MODE=off,debug,profile,trace - EG - Enables step debugger, profiling and tracing
+ INI_XDEBUG_MODE: "debug"
+ INI_XDEBUG_HOST: host.docker.internal
+ INI_XDEBUG_PORT: 9000
+ INI_IDEKEY: PHPSTORM
+ INI_XDEBUG_OUTPUT_DIR: "/var/www/project/.debug"
+ INI_XDEBUG_DISCOVER_CLIENT_HOST: 1
+ INI_XDEBUG_CLI_COLOR: 1
+ INI_XDEBUG_START_WITH_REQUEST: 1
+
+ INI_XDEBUG_LOG: "/var/www/project/.debug/remote.log"
+ INI_XDEBUG_LOG_LEVEL: 7
+
+ INI_XDEBUG_TRACE_FORMAT: 0
+ INI_XDEBUG_TRACE_OUTPUT_NAME: "trace.%t-%s"
+
+ INI_XDEBUG_PROFILER_APPEND: 0
+ INI_XDEBUG_PROFILER_OUTPUT_NAME: "cachegrind.out.%t-%s"
+
+ PHP_IDE_CONFIG: "serverName=php-sniff-php-fpm"
diff --git a/docker-project.json b/docker-project.json
new file mode 100644
index 0000000..ad62261
--- /dev/null
+++ b/docker-project.json
@@ -0,0 +1,33 @@
+{
+ "file": "./docker-compose.yml",
+ "service": "php-sniff-php-fpm",
+ "command": "composer %args%",
+ "actions": {
+ "install": {
+ "command": "composer %action% %args%",
+ "user": "www-data"
+ },
+ "update": {
+ "command": "composer %action% %args%",
+ "user": "www-data"
+ },
+ "php": {
+ "command": "php %args%",
+ "user": "www-data"
+ },
+ "bash": {
+ "user": "www-data"
+ },
+ "bash:root": {
+ "command": ["bash"],
+ "user": "root"
+ },
+ "start:dev": {
+ "service": "@host",
+ "command": [
+ "docker-compose build",
+ "docker-compose up -d"
+ ]
+ }
+ }
+}
diff --git a/docker/docker-compose.dev.yml b/docker/docker-compose.dev.yml
new file mode 100644
index 0000000..b0ef1e3
--- /dev/null
+++ b/docker/docker-compose.dev.yml
@@ -0,0 +1,52 @@
+version: '3.4'
+
+services:
+ php-sniff-php-fpm:
+ container_name: php-sniff-php-fpm
+ build:
+ context: ./
+ dockerfile: ./docker/php/Dockerfile
+ target: image-ci-testing
+ ports:
+ - "30112:80"
+ volumes:
+ - ./:/var/www/project
+ environment:
+ IN_DOCKER: 1
+
+ PHP_INI_UPLOAD_MAX_FILESIZE: 100M
+ PHP_INI_POST_MAX_SIZE: 108M
+ PHP_INI_MAX_FILE_UPLOADS: 200
+ INI_EXPOSE_PHP: 0
+
+ INI_MAX_EXECUTION_TIME: 0
+ INI_MEMORY_LIMIT: 2G
+
+ INI_ERROR_LOG: .debug/php-errors.log
+ INI_LOG_ERRORS: 1
+ INI_DISPLAY_ERRORS: "E_ALL & ~E_DEPRECATED & ~E_NOTICE"
+ INI_DISPLAY_STARTUP_ERRORS: 1
+ INI_ERROR_REPORTING: 1
+ INI_HTML_ERRORS: 0
+
+ # https://xdebug.org/docs/all_settings#mode
+ # INI_XDEBUG_MODE=off,debug,profile,trace - EG - Enables step debugger, profiling and tracing
+ INI_XDEBUG_MODE: "debug"
+ INI_XDEBUG_HOST: host.docker.internal
+ INI_XDEBUG_PORT: 9000
+ INI_IDEKEY: PHPSTORM
+ INI_XDEBUG_OUTPUT_DIR: "/var/www/project/.debug"
+ INI_XDEBUG_DISCOVER_CLIENT_HOST: 1
+ INI_XDEBUG_CLI_COLOR: 1
+ INI_XDEBUG_START_WITH_REQUEST: 1
+
+ INI_XDEBUG_LOG: "/var/www/project/.debug/remote.log"
+ INI_XDEBUG_LOG_LEVEL: 7
+
+ INI_XDEBUG_TRACE_FORMAT: 0
+ INI_XDEBUG_TRACE_OUTPUT_NAME: "trace.%t-%s"
+
+ INI_XDEBUG_PROFILER_APPEND: 0
+ INI_XDEBUG_PROFILER_OUTPUT_NAME: "cachegrind.out.%t-%s"
+
+ PHP_IDE_CONFIG: "serverName=php-sniff-php-fpm"
diff --git a/docker/php/Dockerfile b/docker/php/Dockerfile
new file mode 100644
index 0000000..38b2c30
--- /dev/null
+++ b/docker/php/Dockerfile
@@ -0,0 +1,69 @@
+# For why we separate so many docker layers by performing multiple RUN and COPY, please see
+# https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
+# https://www.ginkgobioworks.com/2020/05/18/optimizing-your-dockerfile/
+
+FROM base-php-fpm:php82 as base
+
+COPY ./docker/php/www.conf /usr/local/etc/php-fpm.d/www.conf
+RUN chmod 644 /usr/local/etc/php-fpm.d/www.conf
+
+FROM base as composer-install
+
+COPY --chown=www-data:www-data ./composer.json /var/www/project/composer.json
+COPY --chown=www-data:www-data ./composer.lock /var/www/project/composer.lock
+
+USER www-data
+RUN COMPOSER_MEMORY_LIMIT=-1 composer install
+USER root
+
+FROM base as copy-volume
+
+COPY --chown=www-data:www-data ./ /var/www/project
+
+
+FROM base as env-file
+
+RUN mkdir -p shop-env-config
+RUN touch shop-env-config/.env
+
+RUN chown www-data:www-data /var/www/project/shop-env-config/.env
+
+
+# ---------------- Debug ----------------- #
+
+FROM base as debugging
+
+RUN install-php-extensions xdebug
+
+# debug settings
+RUN mkdir -m 777 -p .debug
+RUN chown www-data:www-data .debug
+
+# Travis should have the same ini setup as live prod
+COPY ./docker/php/php-fpm-ini.ini /usr/local/etc/php/conf.d/999-overrides.ini
+
+COPY --from=composer-install /var/www/project .
+COPY --from=env-file /var/www/project .
+COPY --from=copy-volume /var/www/project .
+
+# Bind mount location
+VOLUME ["/var/www/project"]
+
+CMD php-fpm
+
+
+# ---------------- CI ----------------- #
+
+FROM base as image-ci-testing
+
+# Travis should have the same ini setup as live prod
+COPY ./docker/php/php-fpm-ini.ini /usr/local/etc/php/conf.d/999-overrides.ini
+
+COPY --from=composer-install /var/www/project .
+COPY --from=env-file /var/www/project .
+COPY --from=copy-volume /var/www/project .
+
+# Bind mount location
+VOLUME ["/var/www/project"]
+
+CMD php-fpm
diff --git a/docker/php/php-fpm-ini.ini b/docker/php/php-fpm-ini.ini
new file mode 100644
index 0000000..65cbbda
--- /dev/null
+++ b/docker/php/php-fpm-ini.ini
@@ -0,0 +1,23 @@
+memory_limit = -1
+
+[xdebug]
+
+xdebug.mode=${INI_XDEBUG_MODE}
+xdebug.client_host=${INI_XDEBUG_HOST}
+xdebug.client_port=${INI_XDEBUG_PORT}
+xdebug.idekey=${INI_IDEKEY}
+xdebug.output_dir=${INI_XDEBUG_OUTPUT_DIR}
+xdebug.discover_client_host = ${INI_XDEBUG_DISCOVER_CLIENT_HOST}
+xdebug.cli_color = ${INI_XDEBUG_CLI_COLOR}
+xdebug.start_with_request = ${INI_XDEBUG_START_WITH_REQUEST}
+
+xdebug.log = ${INI_XDEBUG_LOG}
+xdebug.log_level = ${INI_XDEBUG_LOG_LEVEL}
+
+xdebug.trace_format = ${INI_XDEBUG_TRACE_FORMAT}
+xdebug.trace_output_name = ${INI_XDEBUG_TRACE_OUTPUT_NAME}
+
+xdebug.profiler_append = ${INI_XDEBUG_PROFILER_APPEND}
+xdebug.profiler_output_name = ${INI_XDEBUG_PROFILER_OUTPUT_NAME}
+
+
diff --git a/docker/php/www.conf b/docker/php/www.conf
new file mode 100644
index 0000000..94e799c
--- /dev/null
+++ b/docker/php/www.conf
@@ -0,0 +1,13 @@
+[www]
+
+user = www-data
+group = www-data
+
+pm = static
+pm.max_children = 75
+pm.max_requests = 250
+pm.status_path = /status
+
+ping.path = /ping
+
+access.format = "%m %r %d %C %M %s %q"
diff --git a/ecs.php b/ecs.php
new file mode 100644
index 0000000..7310d04
--- /dev/null
+++ b/ecs.php
@@ -0,0 +1,30 @@
+paths([
+ __DIR__ . '/src',
+ __DIR__ . '/tests',
+ ]);
+
+ // this way you add a single rule
+ $ecsConfig->rules([
+ NoUnusedImportsFixer::class,
+ ]);
+
+ // this way you can add sets - group of rules
+ $ecsConfig->sets([
+ // run and fix, one by one
+ // SetList::SPACES,
+ // SetList::ARRAY,
+ // SetList::DOCBLOCK,
+ // SetList::NAMESPACES,
+ // SetList::COMMENTS,
+ // SetList::PSR_12,
+ ]);
+};
diff --git a/phpunit.xml b/phpunit.xml
deleted file mode 100644
index 34cad17..0000000
--- a/phpunit.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
= $val ?>
- - - -| - - |
= $val ?>
- - - -| - - |