1
0
mirror of https://github.com/taigrr/wtf synced 2025-01-18 04:03:14 -08:00
wtf/Makefile
Chris Cummer 0ae44a4d5c Remove rest of vendor directory
Signed-off-by: Chris Cummer <chriscummer@me.com>
2020-02-22 02:04:13 -08:00

144 lines
3.7 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
# -------------------- Actions -------------------- #
## build: builds a local version
build:
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 ${APP}..."
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 "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:
@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
bin/${APP}
## test: runs the test suite
test: build
go test ./...
## uninstall: uninstals a locally-installed version
uninstall:
@rm ~/go/bin/${APP}