include .env.infra-example

clone:
	git clone ${MY_APP_GIT_URL} app

start:
	docker-compose up -d

stop:
	docker-compose down --remove-orphans -v

restart: stop start

status:
	docker-compose ps

bash:
	docker-compose exec php-fpm bash

worker-restart:
	docker-compose exec worker supervisorctl restart laravel-worker:*

clear-images:
	docker-compose exec php-fpm ./artisan clear:orphaned-images

links-images:
	jdupes -r -1 -l app/storage/app

tinker:
	docker-compose exec php-fpm ./artisan tinker

reseed-db:
	docker-compose exec php-fpm bash -c "./artisan migrate:refresh; ./artisan db:seed"

setup-laravel-key:
	docker-compose exec php-fpm php /application/artisan key:generate

setup-laravel-packages:
	docker-compose exec php-fpm composer install

copy-laravel-env:
	docker-compose exec php-fpm cp /application/.env.example /application/.env

copy-infra-env:
	cp .env.infra-example .env

run-migrations:
	docker-compose exec php-fpm ./artisan migrate

run-plan-seed:
	docker-compose exec php-fpm ./artisan db:seed --class=PlanSeeder

run-user-seed:
	docker-compose exec php-fpm ./artisan db:seed --class=UserSeeder

seed-db:
	docker-compose exec php-fpm ./artisan db:seed

fix-permissions:
	docker-compose exec php-fpm chown -R www-data:www-data storage

fix-code-style:
	docker-compose exec php-fpm  vendor/bin/pint

artisan:
	docker-compose exec php-fpm ./artisan $(ARGS)

mysql-console:
	docker-compose exec mysql mysql -u${MYSQL_USER} -p${MYSQL_PASSWORD} ${MYSQL_DATABASE}

start-frontend:
	docker-compose exec php-fpm npm run watch

build-frontend-prod:
	docker-compose exec php-fpm npm run production

make-storage-link:
	docker-compose exec php-fpm ./artisan storage:link

node-frontend-deps:
	docker-compose exec php-fpm npm i --legacy-peer-deps

paratest-bin:
	docker-compose exec -u www-data php-fpm vendor/bin/paratest

paratest-artisan:
	docker-compose exec -u www-data php-fpm ./artisan test --parallel --stop-on-failure --env=testing

fix-insights:
	docker-compose exec php-fpm vendor/bin/phpinsights --fix --config-path=./config/insights.php --no-interaction --min-quality=80 --min-complexity=90 --min-architecture=75 --min-style=95

insights:
	docker-compose exec php-fpm vendor/bin/phpinsights --config-path=./config/insights.php --no-interaction --min-quality=80 --min-complexity=90 --min-architecture=75 --min-style=95 --flush-cache

rector:
	docker-compose exec php-fpm vendor/bin/rector process --dry-run

static-analysis:
	docker-compose exec php-fpm composer static-analysis

detect-magic-numbers:
	docker-compose exec -u www-data php-fpm vendor/bin/phpmnd app/ tests/

fix-web-permissions:
	docker-compose exec -T php-fpm chown -R www-data:www-data bootstrap/cache storage

ci: fix-web-permissions fix-code-style detect-magic-numbers test rector insights static-analysis fix-web-permissions

local-composer-ci:
	docker-compose exec -T php-fpm composer ci

test: fix-web-permissions paratest-artisan

local-ci: fix-web-permissions local-composer-ci fix-web-permissions

init: clone copy-infra-env restart setup-laravel-packages copy-laravel-env setup-laravel-key run-migrations node-frontend-deps build-frontend-prod fix-permissions make-storage-link

