mirror of
https://github.com/NNTmux/newznab-tmux.git
synced 2026-08-28 23:01:29 +00:00
183 lines
6.2 KiB
Makefile
183 lines
6.2 KiB
Makefile
# ──────────────────────────────────────────────────────────────
|
||
# NNTmux – Docker / Sail convenience targets
|
||
# ──────────────────────────────────────────────────────────────
|
||
#
|
||
# Run `make` or `make help` to see all available targets.
|
||
# See DOCKER.md for full documentation.
|
||
# ──────────────────────────────────────────────────────────────
|
||
|
||
.DEFAULT_GOAL := help
|
||
|
||
# Source SEARCH_DRIVER from .env and export as COMPOSE_PROFILES
|
||
# so the correct search engine container starts automatically.
|
||
-include .env
|
||
export COMPOSE_PROFILES ?= $(SEARCH_DRIVER)
|
||
|
||
SAIL := ./sail
|
||
DOCKER_COMPOSE := docker compose
|
||
|
||
# Colors
|
||
CYAN := \033[36m
|
||
GREEN := \033[32m
|
||
YELLOW := \033[33m
|
||
RESET := \033[0m
|
||
|
||
# ── Lifecycle ────────────────────────────────────────────────
|
||
|
||
.PHONY: up
|
||
up: ## Start all services in the background
|
||
@$(SAIL) up -d
|
||
|
||
.PHONY: down
|
||
down: ## Stop all services
|
||
@$(SAIL) down
|
||
|
||
.PHONY: stop
|
||
stop: down ## Alias for 'down'
|
||
|
||
.PHONY: restart
|
||
restart: ## Restart all services
|
||
@$(SAIL) restart
|
||
|
||
.PHONY: build
|
||
build: ## Build the app image
|
||
@$(SAIL) build
|
||
|
||
.PHONY: rebuild
|
||
rebuild: ## Build the app image from scratch (no cache)
|
||
@$(SAIL) build --no-cache
|
||
|
||
.PHONY: pull
|
||
pull: ## Pull the latest versions of all base images
|
||
@$(DOCKER_COMPOSE) pull
|
||
|
||
.PHONY: update
|
||
update: pull rebuild ## Pull latest images, rebuild, and restart
|
||
@$(SAIL) up -d
|
||
|
||
.PHONY: fresh
|
||
fresh: ## Destroy ALL volumes, rebuild, and start clean (DATA LOSS!)
|
||
@echo "$(YELLOW)⚠ This will destroy all Docker volumes (database, redis, search index).$(RESET)"
|
||
@read -p "Are you sure? [y/N] " confirm && [ "$$confirm" = "y" ] || exit 1
|
||
@$(SAIL) down -v
|
||
@$(SAIL) build --no-cache
|
||
@$(SAIL) up -d
|
||
@echo "$(GREEN)✔ Fresh environment is up. Run 'make artisan cmd=nntmux:install' to initialise.$(RESET)"
|
||
|
||
# ── Shell Access ─────────────────────────────────────────────
|
||
|
||
.PHONY: shell
|
||
shell: ## Open a bash shell in the app container
|
||
@$(SAIL) shell
|
||
|
||
.PHONY: root-shell
|
||
root-shell: ## Open a root bash shell in the app container
|
||
@$(SAIL) root-shell
|
||
|
||
.PHONY: tinker
|
||
tinker: ## Open a Laravel Tinker session
|
||
@$(SAIL) tinker
|
||
|
||
# ── Artisan / PHP ────────────────────────────────────────────
|
||
|
||
.PHONY: artisan
|
||
artisan: ## Run an artisan command (usage: make artisan cmd="migrate")
|
||
@$(SAIL) artisan $(cmd)
|
||
|
||
.PHONY: tmux-start
|
||
tmux-start: ## Start the NNTmux tmux processing engine
|
||
@$(SAIL) artisan tmux:start
|
||
|
||
.PHONY: tmux-stop
|
||
tmux-stop: ## Stop the NNTmux tmux processing engine
|
||
@$(SAIL) artisan tmux:stop
|
||
|
||
.PHONY: tmux-attach
|
||
tmux-attach: ## Attach to the running tmux session
|
||
@$(SAIL) artisan tmux:attach
|
||
|
||
.PHONY: horizon
|
||
horizon: ## Show Horizon status
|
||
@$(SAIL) artisan horizon:status
|
||
|
||
# ── Testing & Quality ────────────────────────────────────────
|
||
|
||
.PHONY: test
|
||
test: ## Run the PHPUnit test suite (usage: make test filter=TestName)
|
||
@$(SAIL) test $(if $(filter),--filter=$(filter),)
|
||
|
||
.PHONY: pint
|
||
pint: ## Run Laravel Pint code formatter on dirty files
|
||
@$(SAIL) pint --dirty
|
||
|
||
.PHONY: pint-all
|
||
pint-all: ## Run Laravel Pint on all files
|
||
@$(SAIL) pint
|
||
|
||
# ── Frontend ─────────────────────────────────────────────────
|
||
|
||
.PHONY: npm-build
|
||
npm-build: ## Run npm install and build inside the container
|
||
@$(SAIL) npm install
|
||
@$(SAIL) npm run build
|
||
|
||
.PHONY: npm-dev
|
||
npm-dev: ## Start Vite dev server inside the container
|
||
@$(SAIL) npm run dev
|
||
|
||
# ── Dependencies ─────────────────────────────────────────────
|
||
|
||
.PHONY: composer-install
|
||
composer-install: ## Run composer install inside the container
|
||
@$(SAIL) composer install
|
||
|
||
.PHONY: composer-update
|
||
composer-update: ## Run composer update inside the container
|
||
@$(SAIL) composer update
|
||
|
||
# ── Database / Services ──────────────────────────────────────
|
||
|
||
.PHONY: db
|
||
db: ## Open a MariaDB CLI session
|
||
@$(SAIL) mariadb
|
||
|
||
.PHONY: redis-cli
|
||
redis-cli: ## Open a Redis CLI session
|
||
@$(SAIL) redis
|
||
|
||
# ── Logs & Status ────────────────────────────────────────────
|
||
|
||
.PHONY: logs
|
||
logs: ## Tail logs from all containers
|
||
@$(DOCKER_COMPOSE) logs -f --tail=100
|
||
|
||
.PHONY: status
|
||
status: ## Show running containers and their status
|
||
@$(DOCKER_COMPOSE) ps
|
||
|
||
# ── Cleanup ──────────────────────────────────────────────────
|
||
|
||
.PHONY: clean
|
||
clean: ## Remove stopped containers and dangling images
|
||
@docker system prune -f
|
||
@echo "$(GREEN)✔ Cleaned up dangling resources.$(RESET)"
|
||
|
||
.PHONY: nuke
|
||
nuke: ## Remove ALL project containers, images, and volumes (DATA LOSS!)
|
||
@echo "$(YELLOW)⚠ This will remove ALL project containers, images, and volumes.$(RESET)"
|
||
@read -p "Are you sure? [y/N] " confirm && [ "$$confirm" = "y" ] || exit 1
|
||
@$(SAIL) down -v --rmi all
|
||
@echo "$(GREEN)✔ All project Docker resources removed.$(RESET)"
|
||
|
||
# ── Help ─────────────────────────────────────────────────────
|
||
|
||
.PHONY: help
|
||
help: ## Show this help message
|
||
@echo ""
|
||
@echo "$(CYAN)NNTmux Docker / Sail Commands$(RESET)"
|
||
@echo "$(CYAN)─────────────────────────────$(RESET)"
|
||
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | \
|
||
awk 'BEGIN {FS = ":.*?## "}; {printf " $(GREEN)%-20s$(RESET) %s\n", $$1, $$2}'
|
||
@echo ""
|
||
|