mirror of
https://github.com/taigrr/wtf
synced 2025-01-18 04:03:14 -08:00
163 lines
4.2 KiB
Makefile
163 lines
4.2 KiB
Makefile
.PHONY: build clean contrib_check coverage docker-build docker-install help install isntall lint run size test uninstall
|
|
|
|
# detect GOPATH if not set
|
|
ifndef $(GOPATH)
|
|
$(info GOPATH is not set, autodetecting..)
|
|
TESTPATH := $(dir $(abspath ../../..))
|
|
DIRS := bin pkg src
|
|
|
|
# create a ; separated line of tests and pass it to shell
|
|
MISSING_DIRS := $(shell $(foreach entry,$(DIRS),test -d "$(TESTPATH)$(entry)" || echo "$(entry)";))
|
|
ifeq ($(MISSING_DIRS),)
|
|
$(info Found GOPATH: $(TESTPATH))
|
|
export GOPATH := $(TESTPATH)
|
|
else
|
|
$(info ..missing dirs "$(MISSING_DIRS)" in "$(TESTDIR)")
|
|
$(info GOPATH autodetection failed)
|
|
endif
|
|
endif
|
|
|
|
# Set go modules to on and use GoCenter for immutable modules
|
|
export GO111MODULE = on
|
|
export GOPROXY = https://proxy.golang.org,direct
|
|
|
|
# Determines the path to this Makefile
|
|
THIS_FILE := $(lastword $(MAKEFILE_LIST))
|
|
|
|
APP=wtfutil
|
|
|
|
define HEADER
|
|
____ __ ____ .___________. _______
|
|
\ \ / \ / / | || ____|
|
|
\ \/ \/ / `---| |----`| |__
|
|
\ / | | | __|
|
|
\ /\ / | | | |
|
|
\__/ \__/ |__| |__|
|
|
|
|
endef
|
|
export HEADER
|
|
|
|
# -------------------- Actions -------------------- #
|
|
|
|
## build: builds a local version
|
|
build:
|
|
@echo "$$HEADER"
|
|
@echo "Building..."
|
|
go build -o bin/${APP}
|
|
@echo "Done building"
|
|
|
|
## clean: removes old build cruft
|
|
clean:
|
|
rm -rf ./dist
|
|
rm -rf ./bin/${APP}
|
|
@echo "Done cleaning"
|
|
|
|
## contrib-check: checks for any contributors who have not been given due credit
|
|
contrib-check:
|
|
npx all-contributors-cli check
|
|
|
|
## coverage: figures out and displays test code coverage
|
|
coverage:
|
|
go test -coverprofile=coverage.out ./...
|
|
go tool cover -html=coverage.out
|
|
|
|
## docker-build: builds in docker
|
|
docker-build:
|
|
@echo "Building ${APP} in Docker..."
|
|
docker build -t wtfutil:build --build-arg=version=master -f Dockerfile.build .
|
|
@echo "Done with docker build"
|
|
|
|
## docker-install: installs a local version of the app from docker build
|
|
docker-install:
|
|
@echo "Installing..."
|
|
docker create --name wtf_build wtfutil:build
|
|
docker cp wtf_build:/usr/local/bin/wtfutil ~/.local/bin/
|
|
$(eval INSTALLPATH = $(shell which ${APP}))
|
|
@echo "${APP} installed into ${INSTALLPATH}"
|
|
docker rm wtf_build
|
|
|
|
## gosec: runs the gosec static security scanner against the source code
|
|
gosec:
|
|
gosec -tests ./...
|
|
|
|
## help: prints this help message
|
|
help:
|
|
@echo "Usage: \n"
|
|
@sed -n 's/^##//p' ${MAKEFILE_LIST} | column -t -s ':' | sed -e 's/^/ /'
|
|
|
|
## isntall: an alias for 'install'
|
|
isntall:
|
|
@$(MAKE) -f $(THIS_FILE) install
|
|
|
|
## install: installs a local version of the app
|
|
install:
|
|
@echo "$$HEADER"
|
|
@echo "Installing ${APP}..."
|
|
@go clean
|
|
@go install -ldflags="-s -w -X main.version=$(shell git describe --always --abbrev=6) -X main.date=$(shell date +%FT%T%z)"
|
|
@mv ~/go/bin/wtf ~/go/bin/${APP}
|
|
$(eval INSTALLPATH = $(shell which ${APP}))
|
|
@echo "${APP} installed into ${INSTALLPATH}"
|
|
|
|
## lint: runs a number of code quality checks against the source code
|
|
lint:
|
|
golangci-lint run
|
|
|
|
# lint:
|
|
# @echo "\033[35mhttps://github.com/kisielk/errcheck\033[0m"
|
|
# errcheck ./app
|
|
# errcheck ./cfg
|
|
# errcheck ./flags
|
|
# errcheck ./help
|
|
# errcheck ./logger
|
|
# errcheck ./modules/...
|
|
# errcheck ./utils
|
|
# errcheck ./view
|
|
# errcheck ./wtf
|
|
# errcheck ./main.go
|
|
|
|
# @echo "\033[35mhttps://golang.org/cmd/vet/k\033[0m"
|
|
# go vet ./app
|
|
# go vet ./cfg
|
|
# go vet ./flags
|
|
# go vet ./help
|
|
# go vet ./logger
|
|
# go vet ./modules/...
|
|
# go vet ./utils
|
|
# go vet ./view
|
|
# go vet ./wtf
|
|
# go vet ./main.go
|
|
|
|
# @echo "\033[35m# https://staticcheck.io/docs/k\033[0m"
|
|
# staticcheck ./app
|
|
# staticcheck ./cfg
|
|
# staticcheck ./flags
|
|
# staticcheck ./help
|
|
# staticcheck ./logger
|
|
# staticcheck ./modules/...
|
|
# staticcheck ./utils
|
|
# staticcheck ./view
|
|
# staticcheck ./wtf
|
|
# staticcheck ./main.go
|
|
|
|
# @echo "\033[35m# https://github.com/mdempsky/unconvert\033[0m"
|
|
# unconvert ./...
|
|
|
|
## loc: displays the lines of code (LoC) count
|
|
loc:
|
|
@loc --exclude _sample_configs/ _site/ docs/ Makefile *.md
|
|
|
|
## run: executes the locally-installed version
|
|
run: build
|
|
@echo "$$HEADER"
|
|
bin/${APP}
|
|
|
|
## test: runs the test suite
|
|
test: build
|
|
@echo "$$HEADER"
|
|
go test ./...
|
|
|
|
## uninstall: uninstals a locally-installed version
|
|
uninstall:
|
|
@rm ~/go/bin/${APP}
|