|
1 | | -# .RECIPEPREFIX = " " |
2 | | -# Change tabs to space in makefile |
3 | | - |
4 | | -# Load .env variable (the prod is added also if there is any) |
5 | | -ifneq (,$(wildcard ./.env.dist)) |
6 | | - include .env.dist |
7 | | - export |
8 | | -endif |
9 | | -ifneq (,$(wildcard ./.env)) |
10 | | - include .env |
11 | | - export |
12 | | -endif |
13 | | -ifneq (,$(wildcard ./.env.prod)) |
14 | | - include .env.prod |
15 | | - export |
16 | | -endif |
17 | | - |
18 | | -# connect to the back container |
| 1 | +.DEFAULT_GOAL := help |
| 2 | +SHELL := $(shell which bash) |
| 3 | + |
| 4 | +# Load .env variable |
| 5 | +-include .env.dist |
| 6 | +-include .env |
| 7 | + |
| 8 | +.env: ## Create .env file if it's does not exist |
| 9 | + cp .env.dist .env |
| 10 | + |
| 11 | +.PHONY: sync-env |
| 12 | +sync-env: .env ## Add variables who did not exist in .env (from .env.dist) |
| 13 | + @while IFS='=' read -r k v; do \ |
| 14 | + if [[ ! -z "$$k" && ! -z "$$v" && $${k:0:1} != '#' ]]; then \ |
| 15 | + grep -q "^$$k=" .env; \ |
| 16 | + if [[ $$? -ne 0 ]]; then \ |
| 17 | + echo "Warning : $$k is declared in .env.dist but was not in .env (auto fixed)" >&2; \ |
| 18 | + echo "# Added by autofix :" >> .env; echo "$$k=$$v" >> .env; \ |
| 19 | + fi; \ |
| 20 | + fi; \ |
| 21 | + done < .env.dist |
| 22 | + |
19 | 23 | .PHONY: bbash |
20 | | -bbash: ;\ |
21 | | - docker compose exec back bash; |
| 24 | +bbash: sync-env ## connect to the back container |
| 25 | + docker compose exec back bash; |
22 | 26 |
|
23 | | -# connect to the front container |
24 | 27 | .PHONY: fbash |
25 | | -fbash: ;\ |
26 | | - docker compose exec front bash; |
| 28 | +fbash: sync-env ## connect to the front container |
| 29 | + docker compose exec front bash; |
27 | 30 |
|
28 | | -# Launch migration |
29 | 31 | .PHONY: migrate |
30 | | -migrate: ;\ |
31 | | - docker compose exec back composer -- run console doctrine:migrations:migrate -n |
| 32 | +migrate: sync-env ## Launch migration |
| 33 | + docker compose exec back composer -- run console doctrine:migrations:migrate -n |
32 | 34 |
|
33 | | -# Force doctrine update from entities |
34 | 35 | .PHONY: db-dev-mig |
35 | | -db-dev-mig: ;\ |
36 | | - docker compose exec back composer -- run console doctrine\:schema\:update -f |
| 36 | +db-dev-mig: sync-env ## Force doctrine update from entities |
| 37 | + docker compose exec back composer -- run console doctrine\:schema\:update -f |
37 | 38 |
|
38 | | -# Launch generate migration (recommended) from database diff |
39 | | -# doctrine:schema:validate --skip-sync is used to check the database mapping before generating the migration, |
40 | | -# skip-sync is used to skip database and mapping sync validation |
41 | | -db-mig-diff: ;\ |
42 | | - docker compose exec back composer -- run console doctrine:schema:validate --skip-sync && \ |
43 | | - docker compose exec back composer -- run console make:migration |
| 39 | +db-mig-diff: sync-env ## Launch generate migration (recommended) from database diff |
| 40 | + # doctrine:schema:validate --skip-sync is used to check the database mapping before generating the migration, |
| 41 | + # skip-sync is used to skip database and mapping sync validation |
| 42 | + docker compose exec back composer -- run console doctrine:schema:validate --skip-sync |
| 43 | + docker compose exec back composer -- run console make:migration |
44 | 44 |
|
45 | | -# Launch generate migration (not recommended) |
46 | 45 | .PHONY: migrate-diff |
47 | | -db-migrate-diff: ;\ |
48 | | - docker compose exec back composer -- run console doctrine:migrations:diff -n |
| 46 | +db-migrate-diff: sync-env ## Launch generate migration (not recommended) |
| 47 | + docker compose exec back composer -- run console doctrine:migrations:diff -n |
49 | 48 |
|
50 | | -# See logs of back |
51 | 49 | .PHONY: blogs |
52 | | -blogs: ;\ |
53 | | - docker-compose logs back -f |
| 50 | +blogs: ## Display logs of back |
| 51 | + docker compose logs back -f |
54 | 52 |
|
55 | 53 | .PHONY: flogs |
56 | | -flogs: ;\ |
57 | | - docker-compose logs front -f |
58 | | -# Init dev env |
59 | | -init-dev: ;\ |
60 | | - cp -n docker-compose.override.yml.template docker-compose.override.yml; \ |
61 | | - cp -n .env.dist .env; \ |
62 | | - echo "Add ${BASE_DOMAIN} and ${API_DOMAIN} and samltest.${BASE_DOMAIN} to your /etc/hosts"; \ |
63 | | - if grep -q ${BASE_DOMAIN} /etc/hosts ; then echo "not adding to /etc/hosts" ; else echo "\n127.0.0.1 ${BASE_DOMAIN} ${API_DOMAIN} samltest.${BASE_DOMAIN}" | sudo tee -a /etc/hosts ; fi |
| 54 | +flogs: sync-env ## Display logs of front |
| 55 | + docker compose logs front -f |
| 56 | +.PHONY: init-dev |
| 57 | +init-dev: sync-env ## Init dev env |
| 58 | + cp -n docker-compose.override.yml.template docker-compose.override.yml |
| 59 | + if uname | grep -ivq "linux"; then \ |
| 60 | + echo "Add $(BASE_DOMAIN) and $(API_DOMAIN) and samltest.$(BASE_DOMAIN) to your /etc/hosts"; \ |
| 61 | + if grep -q $(BASE_DOMAIN) /etc/hosts ; then echo "not adding to /etc/hosts" ; else echo "\n127.0.0.1 $(BASE_DOMAIN) $(API_DOMAIN) samltest.$(BASE_DOMAIN)" | sudo tee -a /etc/hosts ; fi \ |
| 62 | + fi |
64 | 63 | # |
65 | 64 | # Theses are usefull when you use docker |
66 | 65 | # |
| 66 | +.PHONY: down |
| 67 | +down: sync-env ## down docker compose |
| 68 | + docker compose down |
67 | 69 |
|
68 | | -# down docker compose |
69 | | -down: ;\ |
70 | | - docker compose down |
71 | | -# up docker compose |
72 | | -up: ;\ |
73 | | - DOCKER_BUILDKIT=1 docker compose up -d ; docker compose logs initback back front -f |
| 70 | +.PHONY: up |
| 71 | +up: sync-env ## up docker compose |
| 72 | + DOCKER_BUILDKIT=1 docker compose up -d |
| 73 | + docker compose logs initback back front -f |
74 | 74 |
|
75 | | -# stronger down (remove volume / image / orphans) |
76 | 75 | .PHONY: fdown |
77 | | -fdown: ;\ |
78 | | - docker compose down -v --remove-orphans |
| 76 | +fdown: sync-env ## stronger down (remove volume / image / orphans) |
| 77 | + docker compose down -v --remove-orphans |
79 | 78 |
|
80 | | -# stronger up (recreate all container and rebuild the image) |
81 | | -fup: ;\ |
82 | | - DOCKER_BUILDKIT=1 docker compose up -d --force-recreate --build |
| 79 | +fup: sync-env ## stronger up (recreate all container and rebuild the image) |
| 80 | + DOCKER_BUILDKIT=1 docker compose up -d --force-recreate --build |
83 | 81 |
|
84 | | -# Soft Restart |
85 | 82 | .PHONY: restart |
86 | | -restart: down up |
| 83 | +restart: down up ## Soft Restart |
87 | 84 |
|
88 | | -# Hard restart |
89 | 85 | .PHONY: frestart |
90 | | -frestart: fdown fup |
| 86 | +frestart: fdown fup ## Hard restart |
91 | 87 |
|
92 | 88 | .PHONY: stop-front |
93 | | -stop-front: ;\ |
94 | | - DOCKER_BUILDKIT=1 docker compose stop front |
| 89 | +stop-front: sync-env ## stop front container |
| 90 | + DOCKER_BUILDKIT=1 docker compose stop front |
95 | 91 |
|
96 | 92 | .PHONY: rm-front |
97 | | -rm-front: ;\ |
98 | | - DOCKER_BUILDKIT=1 docker compose rm front -f |
| 93 | +rm-front: sync-env ## remove front container |
| 94 | + DOCKER_BUILDKIT=1 docker compose rm front -f |
99 | 95 |
|
100 | 96 | .PHONY: start-front |
101 | | -start-front: ;\ |
102 | | - DOCKER_BUILDKIT=1 docker compose up front -d |
| 97 | +start-front: sync-env ## start front container |
| 98 | + DOCKER_BUILDKIT=1 docker compose up front -d |
103 | 99 |
|
104 | 100 | .PHONY: reset-front |
105 | | -reset-front: stop-front rm-front start-front |
| 101 | +reset-front: stop-front rm-front start-front ## reset front container |
106 | 102 |
|
107 | 103 | .PHONY: dumpautoload |
108 | | -dumpautoload: ;\ |
| 104 | +dumpautoload: sync-env ## dump the composer autoloader |
109 | 105 | docker compose exec back composer -- dumpautoload |
110 | 106 |
|
111 | 107 | # |
112 | 108 | # Theses are static analyses + tests |
113 | 109 | # |
114 | 110 |
|
115 | 111 | .PHONY: phpmd |
116 | | -phpmd: ;\ |
| 112 | +phpmd: sync-env ## phpMD |
117 | 113 | docker compose exec back composer -- run phpmd |
118 | 114 |
|
119 | 115 | .PHONY: cs-fix |
120 | | -cs-fix: ;\ |
| 116 | +cs-fix: sync-env ## cs-fix |
121 | 117 | docker compose exec back composer -- run cs-fix |
122 | 118 |
|
123 | 119 |
|
124 | 120 | .PHONY: cs-check |
125 | | -cs-check: ;\ |
| 121 | +cs-check: sync-env ## cs-check |
126 | 122 | docker compose exec back composer -- run cs-check |
127 | 123 |
|
128 | 124 | .PHONY: phpstan |
129 | | -phpstan: ;\ |
| 125 | +phpstan: sync-env ## phpstan |
130 | 126 | docker compose exec back composer -- run phpstan |
131 | 127 |
|
132 | 128 | .PHONY: frontlint |
133 | | -frontlint: ;\ |
| 129 | +frontlint: sync-env ## lint front (fix) |
134 | 130 | docker compose exec front yarn lint --fix |
135 | 131 |
|
136 | 132 | .PHONY: frontcheck |
137 | | -frontcheck: ;\ |
138 | | - docker compose exec front yarn lint |
| 133 | +frontcheck: ## lint front (check) |
| 134 | + docker sync-env compose exec front yarn lint |
139 | 135 |
|
140 | | -# Run all CI tools |
141 | 136 | .PHONY: ci |
142 | | -ci: cs-fix phpstan phpmd cs-check frontlint |
| 137 | +ci: cs-fix phpstan phpmd cs-check frontlint ## Run all CI tools |
143 | 138 |
|
144 | 139 |
|
145 | 140 | .PHONY: drop-db-dev |
146 | | -drop-db-dev: ;\ |
| 141 | +drop-db-dev: ## Drop database |
147 | 142 | docker compose exec back bin/console doctrine:schema:drop --full-database --force |
148 | 143 |
|
149 | | -.PHONY: fixtures-dev |
150 | | -fixtures-dev: ;\ |
151 | | - docker compose exec back bin/console doctrine:fixtures:load -n |
152 | | - |
153 | 144 | .PHONY: reset-db |
154 | | -reset-db: drop-db-dev migrate fixtures-dev |
| 145 | +reset-db: drop-db-dev migrate ## reset database and load fixtures |
| 146 | + docker compose exec back bin/console doctrine:fixtures:load -n --append |
155 | 147 |
|
156 | 148 | .PHONY: dump |
157 | | -dump: ;\ |
158 | | - docker compose exec mysql mysqldump -u ${DATABASE_USERNAME} -p${DATABASE_PASSWORD} ${DATABASE_NAME} > apps/back/dump/dump.sql |
| 149 | +dump: ## dump database in apps/back/dump/dump.sql (use git lfs) |
| 150 | + docker compose exec mysql mysqldump -u $(DATABASE_USERNAME) -p$(DATABASE_PASSWORD) $(DATABASE_NAME) > apps/back/dump/dump.sql |
| 151 | + gzip -f apps/back/dump/dump.sql |
| 152 | + git lfs track ./apps/back/dump/dump.sql.gz |
| 153 | + |
| 154 | +.PHONY: help |
| 155 | +help: ## This help. |
| 156 | + @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST) |
0 commit comments