mirror of
				https://github.com/taigrr/wtf
				synced 2025-01-18 04:03:14 -08:00 
			
		
		
		
	
		
			
				
	
	
		
			165 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			165 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:
 | 
						|
	$(eval GOVERS = $(shell go version))
 | 
						|
	@echo "$$HEADER"
 | 
						|
	@echo "Installing ${APP} with ${GOVERS}..."
 | 
						|
	@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 cache clean
 | 
						|
	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}
 |