GildedRose-Refactoring-Kata/go/Makefile
2023-07-11 20:36:37 +01:00

89 lines
2.4 KiB
Makefile

# Makefile for gilded-rose
# vim: set ft=make ts=8 noet
# Copyright Cabify.com
# Licence MIT
# Variables
# UNAME := $(shell uname -s)
.EXPORT_ALL_VARIABLES:
# this is godly
# https://news.ycombinator.com/item?id=11939200
.PHONY: help
help: ### this screen. Keep it first target to be default
ifeq ($(UNAME), Linux)
@grep -P '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | \
awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'
else
@# this is not tested, but prepared in advance for you, Mac drivers
@awk -F ':.*###' '$$0 ~ FS {printf "%15s%s\n", $$1 ":", $$2}' \
$(MAKEFILE_LIST) | grep -v '@awk' | sort
endif
# Targets
#
.PHONY: debug
debug: ### Debug Makefile itself
@echo $(UNAME)
.PHONY: build-base
build-base:
docker run \
--env CGO_ENABLED=0 \
--env GOCACHE=/.cache/go-build \
--env GOMODCACHE=/go/mod/pkg \
-v "$$PWD:/app:rw" -v "$$HOME/.cache/go-build:/.cache/go-build:rw" -v "$$HOME/.cache/go-mod-pkg:/go/mod/pkg:rw" \
-w /app \
-u "$$(id -u):$$(id -g)" \
--entrypoint "/bin/sh" \
--rm -it \
golang:1.19.2-bullseye -c "$$GO_BUILD_CMD"
.PHONY: build
build:
GO_BUILD_CMD="go install github.com/swaggo/swag/cmd/swag@v1.16.1 && swag init" make build-base
GO_BUILD_CMD="go build -a -o target/bin/gilded-rose ./main.go" make build-base
.PHONY: build-dev
build-dev:
GO_BUILD_CMD="go install github.com/swaggo/swag/cmd/swag@v1.16.1 && swag init" make build-base
GO_BUILD_CMD="go build -v -o target/bin/gilded-rose ./main.go" make build-base
.PHONY: unit-test
unit-test:
GO_BUILD_CMD="go install github.com/swaggo/swag/cmd/swag@v1.16.1 && swag init" make build-base
GO_BUILD_CMD="go test ./... -cover -coverprofile=coverage.out" make build-base
GO_BUILD_CMD="go tool cover -html=coverage.out -o coverage.html" make build-base
.PHONY: mod-tidy
mod-tidy:
GO_BUILD_CMD="go mod tidy" make build-base
.PHONY: run
run: build-dev
target/bin/gilded-rose app:serve
.PHONY: test
test: build-dev
target/bin/gilded-rose test
.PHONY: texttest
texttest: build-dev
docker run \
--env XDG_CACHE_HOME=/.cache/pip \
--env PIP_CACHE_DIR=/.cache/pip \
--env TEXTTEST_ROOT=/app/texttests \
--env TEXTTEST_PATH=/app \
--env TEXTTEST_HOME=/app \
-v "$$PWD:/app:rw" -v "$$HOME/.cache/pip:/.cache/pip:rw" \
-w /app \
-u "$$(id -u):$$(id -g)" \
--entrypoint "/bin/sh" \
--rm -it \
python:3.9.17-slim-bookworm -c "pip install texttest && texttest -con"
.PHONY: docker
docker:
docker build -t gilded-rose:latest .