Website/app/backend/mod.just

121 lines
4 KiB
Text
Raw Normal View History

2024-07-12 22:56:04 +00:00
__default:
2024-07-21 12:03:21 +00:00
@../../bin/just/choose.sh {{ source_file() }} choose
2024-07-12 22:56:04 +00:00
# Checks whether the requriements are met
[group('main')]
check:
#!/bin/bash
2024-07-21 12:03:21 +00:00
source ../../bin/just/colors.sh
source ../../bin/just/check.sh
2024-07-12 22:56:04 +00:00
printf "${BLUE_BG}${BLACK_FG} Checking Backend Requirements ${CLEAR}\n"
cd ..
check_cmd "php" "Php"
check_cmd "composer" "Composer"
2024-07-21 12:03:21 +00:00
check_cmd "symfony" "Symfony cli"
2024-07-12 22:56:04 +00:00
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"
2024-07-21 12:03:21 +00:00
if [[ "$(docker compose version 2>&1)" == "Docker Compose version v"* ]]; 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
2024-07-12 22:56:04 +00:00
if ((error > 0 )); then
exit 1
fi
echo ""
# Installs the dependencies
[group('main')]
install:
cd .. && composer install
# Starts the local Development Setup
[group('main')]
2024-07-14 14:26:52 +00:00
up: halt
2024-07-12 22:56:04 +00:00
-@cd .. && docker compose up -d
-@cd .. && symfony local:server:start -d --no-tls
# Stops the local Development Setup
[group('main')]
halt:
-@cd .. && symfony local:server:stop
-@cd .. && docker compose down
suite_options := "All\nUnit\nIntegration\nWeb"
# 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
cd ..
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
# Lints the PHP Backend Code
[group('utility')]
lint:
@cd .. && vendor/bin/php-cs-fixer fix --allow-risky=yes
# Runs the Static Code Analysis
[group('utility')]
stan:
@cd .. && vendor/bin/phpstan analyze --memory-limit=2G
migration_options := "Generate\nExecute\n"
# 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
)
cd ..
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
cd ..
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