|
| 1 | +.PHONY: code.check code.check.dirty code.fix code.fix.dirty code.check.diff code.fix.diff |
| 2 | + |
| 3 | +version ?= 0.2.0 |
| 4 | +branch ?= develop |
| 5 | + |
| 6 | +#ECS_IMAGE := hub.jcdev.net:24000/php-code-analysis-tool:${version} |
| 7 | +ECS_IMAGE := docker.io/library/dockerize-php-code-analysis-php-code-analysis-tool |
| 8 | + |
| 9 | +# Define default path if one is not passed |
| 10 | +ifndef path |
| 11 | + ifneq ("$(wildcard src)","") |
| 12 | + path = src |
| 13 | + else |
| 14 | + path = app config database tests |
| 15 | + endif |
| 16 | +endif |
| 17 | + |
| 18 | +ifneq ("$(wildcard ecs.php)","") |
| 19 | + ECS_DR := docker run -it --rm -v "$$PWD":/codebase -v "$$PWD/ecs.php":/app/ecs.php ${ECS_IMAGE} bash |
| 20 | +else |
| 21 | + ECS_DR := docker run -it --rm -v "$$PWD":/codebase ${ECS_IMAGE} bash |
| 22 | +endif |
| 23 | + |
| 24 | +GIT_DIR = $(shell git rev-parse --show-toplevel) |
| 25 | +GIT_DIFF_DIRTY = $(shell git diff --name-only | grep '.php$$') |
| 26 | +GIT_DIFF_RANGE=origin/${branch}..HEAD |
| 27 | +GIT_DIFF_BRANCH=$(shell git diff --name-only --diff-filter=ACMRTUXB "${GIT_DIFF_RANGE}" | grep '.php$$') |
| 28 | + |
| 29 | +## |
| 30 | +# @command code.check Check code in specified path. Usage: `make code.check path=src/app\ src/tests` (src by default) |
| 31 | +## |
| 32 | +code.check: |
| 33 | + ${ECS_DR} \ |
| 34 | + -c "ecs check --config /app/ecs.php ${path}" |
| 35 | + |
| 36 | +## |
| 37 | +# @command code.fix Fix code in specified path. Usage: `make code.fix path=src/app\ src/tests` (src by default) |
| 38 | +## |
| 39 | +code.fix: |
| 40 | + ${ECS_DR} \ |
| 41 | + -c "ecs check --fix --config /app/ecs.php ${path}" |
| 42 | + |
| 43 | +## |
| 44 | +# @command code.check.dirty Check only new code. |
| 45 | +## |
| 46 | +code.check.dirty: |
| 47 | + @cd ${GIT_DIR} && ${ECS_DR} \ |
| 48 | + -c "ecs check --config /app/ecs.php ${GIT_DIFF_DIRTY}" |
| 49 | + |
| 50 | +## |
| 51 | +# @command code.fix.dirty Fix only new code. |
| 52 | +## |
| 53 | +code.fix.dirty: |
| 54 | + @cd ${GIT_DIR} && ${ECS_DR} \ |
| 55 | + -c "ecs check --fix --config /app/ecs.php ${GIT_DIFF_DIRTY}" |
| 56 | + |
| 57 | +## |
| 58 | +# @command code.check.diff Check only diff files from target branch. Usage: `make code.check.diff branch=main` (develop by default) |
| 59 | +## |
| 60 | +code.check.diff: |
| 61 | + cd ${GIT_DIR} && ${ECS_DR} \ |
| 62 | + -c "ecs check --config /app/ecs.php ${GIT_DIFF_BRANCH}" |
| 63 | + |
| 64 | +## |
| 65 | +# @command code.fix.diff Fix only diff files from target branch. Usage: `make code.fix.diff branch=main` (develop by default) |
| 66 | +## |
| 67 | +code.fix.diff: |
| 68 | + cd ${GIT_DIR} && ${ECS_DR} \ |
| 69 | + -c "ecs check --fix --config /app/ecs.php ${GIT_DIFF_BRANCH}" |
| 70 | + |
| 71 | +## |
| 72 | +# @command code.config.publish Publish ecs.php configuration file to override default one. |
| 73 | +## |
| 74 | +code.config.publish: |
| 75 | + @echo '...........Publishing config' |
| 76 | + @$(eval CONTAINER_ID = $(shell docker create hub.jcdev.net:24000/php-code-analysis-tool:latest)) |
| 77 | + @docker cp ${CONTAINER_ID}:/app/ecs.php ecs.php |
| 78 | + @docker rm -v ${CONTAINER_ID} |
| 79 | + @echo '...........Published "ecs.php"' |
0 commit comments