76 lines
1.5 KiB
Makefile
76 lines
1.5 KiB
Makefile
# Go parameters
|
|
GOCMD = go
|
|
GOBUILD = $(GOCMD) build
|
|
GOCLEAN = $(GOCMD) clean
|
|
GOTEST = $(GOCMD) test
|
|
GOGET = $(GOCMD) get
|
|
|
|
# SQLite database filename
|
|
DB_FILE = db.sqlite3
|
|
|
|
# Directory containing migration SQL scripts
|
|
MIGRATIONS_DIR = internal/database/migrations
|
|
|
|
# Build target
|
|
build:
|
|
$(GOBUILD) -o bin/server cmd/*.go
|
|
|
|
# Run target
|
|
run: build
|
|
./bin/server
|
|
|
|
watch: build
|
|
watchexec -c -w . -r make run
|
|
|
|
# Clean target
|
|
clean:
|
|
$(GOCLEAN)
|
|
rm -rf bin
|
|
rm -f db.sqlite3
|
|
|
|
# Test target
|
|
test: db.sqlite3
|
|
$(GOTEST) ./... -count=1
|
|
|
|
# Get dependencies target
|
|
deps:
|
|
$(GOGET) -v ./...
|
|
|
|
# Update dependencies target
|
|
update:
|
|
$(GOGET) -u -v ./...
|
|
$(GOCMD) mod tidy
|
|
|
|
# Migration target
|
|
migrate:
|
|
@echo "If this ever fails, run make clean and try again"
|
|
@echo "Migrating database $(DB_FILE) using SQL scripts in $(MIGRATIONS_DIR)"
|
|
@for file in $(wildcard $(MIGRATIONS_DIR)/*.sql); do \
|
|
echo "Applying migration: $$file"; \
|
|
sqlite3 $(DB_FILE) < $$file; \
|
|
done
|
|
|
|
# Target added primarily for CI/CD to ensure that the database is created before running tests
|
|
db.sqlite3:
|
|
make migrate
|
|
|
|
backup:
|
|
mkdir -p backups
|
|
sqlite3 $(DB_FILE) .dump | gzip -9 > ./backups/BACKUP_$(DB_FILE)_$(shell date +"%Y-%m-%d_%H:%M:%S").sql.gz
|
|
# Restore with:
|
|
# gzip -cd BACKUP_FILE.sql.gz | sqlite3 $(DB_FILE)
|
|
|
|
# Format
|
|
fmt:
|
|
$(GOCMD) fmt ./...
|
|
|
|
# Lint
|
|
lint:
|
|
golangci-lint run ./...
|
|
|
|
# Default target
|
|
default: build
|
|
|
|
install-just:
|
|
@echo "Installing just"
|
|
@curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | bash -s -- --to /usr/local/bin
|