94 lines
3.2 KiB
Makefile
94 lines
3.2 KiB
Makefile
# testdays-web helper Makefile
|
|
|
|
SHELL := /bin/bash
|
|
|
|
APP_NAME := testdays-web
|
|
|
|
DB_DRIVER := postgresql+psycopg2
|
|
DB_DATABASE := testdays
|
|
DB_USER := tester
|
|
DB_PASSWORD := fedora
|
|
DB_HOST := localhost
|
|
DB_PORT := 5432
|
|
|
|
SETTINGS_TEMPLATE := ./conf/settings.py.example
|
|
SETTINGS_FILE := ./conf/settings.py
|
|
|
|
# Check if running inside Toolbox
|
|
IS_TOOLBOX := $(shell test -f /run/.toolboxenv && echo true || echo false)
|
|
|
|
ifeq ($(IS_TOOLBOX), true)
|
|
PODMAN_CMD := flatpak-spawn --host podman
|
|
else
|
|
PODMAN_CMD := podman
|
|
endif
|
|
|
|
.PHONY: all help create_db start_db stop_db remove_db setup_db create_mock_data config_app run_app cli
|
|
all: help
|
|
|
|
# HELP
|
|
# This will output the help for each task
|
|
# thanks to https://marmelab.com/blog/2016/02/29/auto-documented-makefile.html
|
|
help: ## This help.
|
|
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf "%-25s %s\n", $$1, $$2}' $(MAKEFILE_LIST)
|
|
|
|
# Check if DB container is already running
|
|
IS_DB_RUNNING := $(shell $(PODMAN_CMD) ps -q -f name=$(DB_DATABASE)db | grep -q . && echo true || echo false)
|
|
create_db: ## Create and start PostgreSQL DB container
|
|
@echo 'Creating PostgreSQL container for DB_URI: $(DB_DRIVER)://$(DB_USER):$(DB_PASSWORD)@$(DB_HOST):$(DB_PORT)/$(DB_DATABASE)'
|
|
ifneq ($(IS_DB_RUNNING), true)
|
|
@$(PODMAN_CMD) run --detach --name $(DB_DATABASE)db \
|
|
--env POSTGRESQL_USER=$(DB_USER) \
|
|
--env POSTGRESQL_PASSWORD=$(DB_PASSWORD) \
|
|
--env POSTGRESQL_DATABASE=$(DB_DATABASE) \
|
|
--publish $(DB_PORT):5432 \
|
|
quay.io/fedora/postgresql-16:latest
|
|
@echo "Wait for DB to finish initializing..."
|
|
@sleep 10
|
|
@python run_cli.py init_db
|
|
else
|
|
@echo "PostgreSQL DB Container '$(DB_DATABASE)db' is running"
|
|
endif
|
|
|
|
start_db: create_db ## Start PostgreSQL DB container
|
|
@echo "Starting PostgreSQL DB Container '$(DB_DATABASE)db'"
|
|
@$(PODMAN_CMD) start $(DB_DATABASE)db
|
|
|
|
stop_db: ## Stop PostgreSQL DB container
|
|
@echo "Stopping PostgreSQL DB Container '$(DB_DATABASE)db'"
|
|
@$(PODMAN_CMD) stop $(DB_DATABASE)db
|
|
|
|
remove_db: stop_db ## Stop and remove PostgreSQL DB container
|
|
@echo "Removing PostgreSQL DB Container '$(DB_DATABASE)db'"
|
|
@$(PODMAN_CMD) container rm $(DB_DATABASE)db
|
|
|
|
setup_db: start_db ## Initialize DB tables
|
|
@python run_cli.py init_db
|
|
|
|
create_mock_data: setup_db ## Preload mock DB users and data
|
|
@python run_cli.py mock_db_users -d
|
|
@python run_cli.py mock_data -d
|
|
|
|
config_app: ## Create app settings file
|
|
ifeq ("$(wildcard $(SETTINGS_FILE))", "")
|
|
@cp $(SETTINGS_TEMPLATE) $(SETTINGS_FILE)
|
|
@sed -i 's/PRODUCTION = True/PRODUCTION = False/g' $(SETTINGS_FILE)
|
|
@sed -i 's/OIDC_ENABLED = True/OIDC_ENABLED = False/g' $(SETTINGS_FILE)
|
|
@echo "Please review app settings in '$(SETTINGS_FILE)' and update as necessary"
|
|
else
|
|
@echo "App configuration: '$(SETTINGS_FILE)'"
|
|
endif
|
|
|
|
run_app: config_app start_db ## Start the testdays-web app web server in local development mode
|
|
@echo "Starting $(APP_NAME) by 'python runapp.py'"
|
|
@RUNMODE=dev python runapp.py
|
|
|
|
CLI_ARGS = $(filter-out $@,$(MAKECMDGOALS))
|
|
cli: ## Execute app CLI runner. Use `make cli -- --help` for help.
|
|
@echo "Note: Separate arguments from cli target by '--' like this: 'make cli -- --help'."
|
|
@echo "Executing CLI: 'python run_cli.py $(CLI_ARGS)'"
|
|
@python run_cli.py $(CLI_ARGS)
|
|
|
|
%: # match all unprocessed targets
|
|
@: # do-nothing
|
|
|