SHELL := /bin/bash APP_NAME := sftp-manager PORT := 48081 BASE_PATH := /sftp-manager APP_URL := http://localhost:$(PORT)$(BASE_PATH) MVN := mvn DOCKER_COMPOSE := docker compose .DEFAULT_GOAL := help .PHONY: help check-mvn check-docker install build test start stop restart status logs deploy bootstrap clean jar-start jar-stop jar-restart help: @echo "Available targets:" @echo " make bootstrap - One command install + deploy + start (Docker)" @echo " make deploy - Build app and start with Docker Compose" @echo " make install - Maven install (skip tests)" @echo " make build - Maven package (skip tests)" @echo " make test - Run all tests" @echo " make start - Start service by Docker Compose" @echo " make stop - Stop service by Docker Compose" @echo " make restart - Restart Docker service" @echo " make status - Show Docker service status" @echo " make logs - Tail service logs" @echo " make jar-start - Start packaged jar using deploy.sh" @echo " make jar-stop - Stop packaged jar using deploy.sh" @echo " make jar-restart - Restart packaged jar using deploy.sh" check-mvn: @command -v $(MVN) >/dev/null 2>&1 || { echo "Error: mvn not found"; exit 1; } check-docker: @command -v docker >/dev/null 2>&1 || { echo "Error: docker not found"; exit 1; } @$(DOCKER_COMPOSE) version >/dev/null 2>&1 || { echo "Error: docker compose not available"; exit 1; } install: check-mvn @echo ">>> Installing project artifacts (skip tests)..." @$(MVN) clean install -DskipTests build: check-mvn @echo ">>> Packaging application (skip tests)..." @$(MVN) clean package -DskipTests test: check-mvn @echo ">>> Running tests..." @$(MVN) clean test start: check-docker @echo ">>> Starting $(APP_NAME) with Docker Compose..." @$(DOCKER_COMPOSE) up -d --build @echo ">>> Started. Visit: $(APP_URL)" stop: check-docker @echo ">>> Stopping $(APP_NAME)..." @$(DOCKER_COMPOSE) down restart: stop start status: check-docker @$(DOCKER_COMPOSE) ps logs: check-docker @$(DOCKER_COMPOSE) logs -f --tail=200 $(APP_NAME) deploy: build start bootstrap: install start clean: check-mvn @$(MVN) clean jar-start: build @chmod +x ./deploy.sh @./deploy.sh start jar-stop: @chmod +x ./deploy.sh @./deploy.sh stop jar-restart: build @chmod +x ./deploy.sh @./deploy.sh restart