mirror of
				https://github.com/taigrr/wtf
				synced 2025-01-18 04:03:14 -08:00 
			
		
		
		
	
		
			
				
	
	
		
			147 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			147 lines
		
	
	
		
			3.8 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:
 | |
| 	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
 | |
| 	bin/${APP}
 | |
| 
 | |
| ## test: runs the test suite
 | |
| test: build
 | |
| 	go test ./...
 | |
| 
 | |
| ## uninstall: uninstals a locally-installed version
 | |
| uninstall:
 | |
| 	@rm ~/go/bin/${APP}
 |