205 lines
6.9 KiB
Makefile
205 lines
6.9 KiB
Makefile
_default:
|
|
@bin/just/choose.sh {{ source_file() }} choose
|
|
|
|
alias i := install
|
|
alias start := up
|
|
alias stop := halt
|
|
alias clean := fresh
|
|
|
|
screen_frontend_session_name := "euph-website_frontend"
|
|
linter_options := "All\nPHP\nTS\nSCSS\nTwig"
|
|
migration_options := "Generate\nExecute\n"
|
|
suite_options := "All\nUnit\nIntegration\nWeb"
|
|
|
|
# Checks whether the requriements are met
|
|
[group('main')]
|
|
check:
|
|
#!/bin/bash
|
|
source bin/just/colors.sh
|
|
source bin/just/check.sh
|
|
|
|
printf "${BLUE_BG}${BLACK_FG} Checking Justfile Requirements ${CLEAR}\n"
|
|
check_cmd "jq" "jq"
|
|
check_cmd "fzf" "fzf"
|
|
check_cmd "screen" "screen"
|
|
check_cmd "grep" "grep"
|
|
check_cmd "printf" "Printf"
|
|
check_cmd "sed" "sed"
|
|
check_cmd "awk" "awk"
|
|
check_cmd "cut" "cut"
|
|
check_cmd "highlight" "highlight"
|
|
if ((error > 0 )); then
|
|
exit 1
|
|
fi
|
|
echo ""
|
|
|
|
printf "${BLUE_BG}${BLACK_FG} Checking Backend Requirements ${CLEAR}\n"
|
|
check_cmd "php" "Php"
|
|
check_cmd "composer" "Composer"
|
|
check_cmd "symfony" "Symfony cli"
|
|
current_composer_version=$(composer --version 2>/dev/null | awk '{print $3}' | cut -d '.' -f 1)
|
|
if [ "${current_composer_version}" = "2" ]; then
|
|
printf >&2 "${GREEN_FG}✔ Composer${BLUE_FG} Version ${GREEN_FG}${current_composer_version}${BLUE_FG} is ${GREEN_FG}installed${BLUE_FG}.\n"
|
|
else
|
|
printf >&2 "${RED_FG}✘ Wrong Composer Version${YELLOW_FG} is installed!\n Version ${RED_FG}2${YELLOW_FG} is ${RED_FG}required${YELLOW_FG}.\n"
|
|
error = 1
|
|
fi
|
|
required_php_version=$(cat .php-version)
|
|
current_php_version=$(symfony php -r "echo PHP_MAJOR_VERSION.'.'.PHP_MINOR_VERSION;")
|
|
if [ "${current_php_version}" = "${required_php_version}" ]; then
|
|
printf >&2 "${GREEN_FG}✔ PHP${BLUE_FG} Version ${GREEN_FG}${current_php_version}${BLUE_FG} is ${GREEN_FG}installed${BLUE_FG}.\n"
|
|
else
|
|
printf >&2 "${RED_FG}✘ Wrong PHP Version${YELLOW_FG} is installed!\n Version ${RED_FG}${required_php_version}${YELLOW_FG} is ${RED_FG}required${YELLOW_FG}.\n"
|
|
symfony local:php:list
|
|
error = 1
|
|
fi
|
|
check "[ $(php -m | grep -c PDO) -eq 1 ]" "Php PDO"
|
|
check "[ $(php -m | grep -c pdo_mysql) -eq 1 ]" "Php Mysql PDO"
|
|
check_cmd "docker" "Docker"
|
|
if echo "$(docker compose version 2>&1)" | grep -q '[0-9]\+\.[0-9]\+\.[0-9]\+'; then
|
|
printf >&2 "${GREEN_FG}✔ Docker Compose${BLUE_FG} is ${GREEN_FG}installed${BLUE_FG}.\n"
|
|
else
|
|
printf >&2 "${RED_FG}✘ Docker Compose${YELLOW_FG} is ${RED_FG}not installed${YELLOW_FG}! \n"
|
|
error=1
|
|
fi
|
|
if ((error > 0 )); then
|
|
exit 1
|
|
fi
|
|
echo ""
|
|
|
|
printf "${BLUE_BG}${BLACK_FG} Checking Frontend Requirements ${CLEAR}\n"
|
|
check_cmd "volta" "Volta"
|
|
check_cmd "node" "Node"
|
|
check_cmd "npm" "NPM"
|
|
required_node_version=$( \
|
|
cat package.json \
|
|
| jq .volta.node \
|
|
| cut -c 2- \
|
|
| cut -d '.' -f 1 \
|
|
)
|
|
current_major_node_version=$(node -v | cut -c 2- | cut -d '.' -f 1)
|
|
current_node_version=$(node -v | cut -c 2-)
|
|
if [ "${current_major_node_version}" = "${required_node_version}" ]; then
|
|
printf >&2 "${GREEN_FG}✔ Node${BLUE_FG} Version ${GREEN_FG}${current_node_version}${BLUE_FG} is ${GREEN_FG}installed${BLUE_FG}.\n"
|
|
else
|
|
printf >&2 "${RED_FG}✘ Wrong Node Version${YELLOW_FG} is installed!\n Version ${RED_FG}${required_node_version}${YELLOW_FG} is ${RED_FG}required${YELLOW_FG}.\n"
|
|
error = 1
|
|
fi
|
|
if ((error > 0 )); then
|
|
exit 1
|
|
fi
|
|
echo ""
|
|
|
|
# Installs the dependencies
|
|
[group('main')]
|
|
install:
|
|
parallel ::: "composer install" "npm i --no-fund"
|
|
|
|
# Starts the local Development Setup
|
|
[group('main')]
|
|
up: halt check
|
|
#!/bin/bash
|
|
source bin/just/colors.sh
|
|
docker compose up -d
|
|
symfony local:server:start -d --no-tls
|
|
screen -dmS {{ screen_frontend_session_name }} npm run watch >> /dev/null
|
|
if [ $? -eq 0 ]; then
|
|
printf "${GREEN_FG}Frontend was started${CLEAR}\n"
|
|
else
|
|
printf "${RED_FG}Frontend didn't start${CLEAR}\n"
|
|
fi
|
|
|
|
# Stops the local Development Setup
|
|
[group('main')]
|
|
halt:
|
|
#!/bin/bash
|
|
source bin/just/colors.sh
|
|
symfony local:server:stop
|
|
docker compose down
|
|
screen -XS {{ screen_frontend_session_name }} quit >> /dev/null
|
|
if [ $? -eq 0 ]; then
|
|
printf "${GREEN_FG}Frontend was stopped${CLEAR}\n"
|
|
fi
|
|
|
|
[group('main')]
|
|
attach:
|
|
#!/bin/bash
|
|
source bin/just/colors.sh
|
|
if screen -ls | grep -q {{ screen_frontend_session_name }}; then
|
|
screen -r {{ screen_frontend_session_name }}
|
|
else
|
|
printf "${RED_FG}Frontend is down${CLEAR}\n"
|
|
fi
|
|
|
|
# Starts the local Development Setup Fresh, with no Cache and the reseted test Data
|
|
[group('main')]
|
|
fresh: halt install up
|
|
@just backend::demo-data
|
|
|
|
# Lints all Files, or if specified only a specifc Set
|
|
[group('utility')]
|
|
lint linter="":
|
|
#!/bin/bash
|
|
chosen_linter=$(
|
|
printf "{{ linter_options }}" |\
|
|
fzf --header="Which linters should be run?" --height 8 -i -q "{{ linter }}" -1
|
|
)
|
|
case "$chosen_linter" in
|
|
*All*) \
|
|
parallel ::: \
|
|
"vendor/bin/php-cs-fixer fix --allow-risky=yes" \
|
|
"npm run lint:ts:fix" \
|
|
"npm run lint:scss:fix" \
|
|
"vendor/bin/twig-cs-fixer lint --fix && php bin/console lint:twig" \
|
|
;;
|
|
*PHP*) vendor/bin/php-cs-fixer fix --allow-risky=yes ;;
|
|
*TS*) npm run lint:ts:fix ;;
|
|
*SCSS*) npm run lint:scss:fix ;;
|
|
*Twig*) vendor/bin/twig-cs-fixer lint --fix && php bin/console lint:twig ;;
|
|
esac
|
|
|
|
# Runs the Static Code Analysis
|
|
[group('utility')]
|
|
stan:
|
|
@vendor/bin/phpstan analyze --memory-limit=2G
|
|
|
|
# Runs all Tests, or if specified only a specific Suite
|
|
[group('utility')]
|
|
test suite="":
|
|
#!/bin/bash
|
|
chosen_suite=$(
|
|
printf "{{ suite_options }}" |\
|
|
fzf --header="which tests should be run?" --height 7 -i -q "{{ suite }}" -1
|
|
)
|
|
if [ "$chosen_suite" != "All" ]; then
|
|
suite_arg="--testsuite $chosen_suite"
|
|
fi
|
|
symfony console doctrine:database:drop --if-exists --force --env=test
|
|
symfony console doctrine:database:create --env=test
|
|
symfony console doctrine:schema:update --force --complete --env=test
|
|
symfony console doctrine:fixtures:load -n --env=test
|
|
symfony console cache:clear --env=test
|
|
vendor/bin/phpunit $suite_arg
|
|
|
|
# Create and Execute Migrations
|
|
[group('utility')]
|
|
migration migration="":
|
|
#!/bin/bash
|
|
chosen_migration=$(
|
|
printf "{{ migration_options }}" |\
|
|
fzf --header="Which migration action to perform?" --height 7 -i -q "{{ migration }}" -1
|
|
)
|
|
case "$chosen_migration" in
|
|
*Generate*) symfony console doctrine:migrations:diff ;;
|
|
*Execute*) symfony console doctrine:migrations:migrate ;;
|
|
esac
|
|
|
|
# Sets up a Fresh Data Set
|
|
[group('utility')]
|
|
demo-data:
|
|
#!/bin/bash
|
|
symfony console doctrine:database:drop --if-exists --force
|
|
symfony console doctrine:database:create
|
|
symfony console doctrine:migrations:migrate -n
|
|
symfony console doctrine:fixtures:load -n
|
|
symfony console cache:clear
|