# Builds a release container
build-container-release: 
	podman build -t ttime-server -f container/Containerfile .

# Builds a release container and runs it
start-release: build-container-release remove-podman-containers
	podman run -d -e DATABASE_URL=sqlite:release.db -p 8080:8080 --name ttime ttime-server
	@echo "Started production ttime-server on http://localhost:8080"

# Removes and stops any containers related to the project
remove-podman-containers:
	podman container rm -fi ttime

# Tests every part of the project
testall:
	cd frontend && npm install
	cd frontend && npm test
	cd frontend && npm run lint
	cd frontend && npm run build
	cd backend && make test
	cd backend && make lint
	cd backend && make itest

# Cleans up everything related to the project
clean: remove-podman-containers
	podman image rm -fi ttime-server
	rm -rf frontend/dist
	rm -rf frontend/node_modules
	rm -f ttime-server.tar.gz
	cd backend && make clean
	@echo "Cleaned up!"

.PHONY: itest
itest:
	python testing.py

# Cleans up everything related to podman, not just the project. Make sure you understand what this means.
podman-clean:
	podman system reset --force

# Installs the linter, which is not included in the ubuntu repo
install-linter:
	curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.56.2

# This installs just, a make alternative, which is slightly more ergonomic to use
install-just:
	@echo "Installing just"
	@curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | bash -s -- --to /usr/local/bin