mirror of
				https://github.com/taigrr/wtf
				synced 2025-01-18 04:03:14 -08:00 
			
		
		
		
	
		
			
				
	
	
		
			89 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
| .PHONY: build clean contrib_check coverage 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"
 | |
| 
 | |
| ## clean: removes old build cruft
 | |
| clean:
 | |
| 	rm -rf ./dist
 | |
| 	rm -rf ./bin/${APP}
 | |
| 
 | |
| ## 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
 | |
| 
 | |
| ## 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:
 | |
| 	go vet ./...
 | |
| 	structcheck ./...
 | |
| 	varcheck ./...
 | |
| 
 | |
| ## run: executes the locally-installed version
 | |
| run: build
 | |
| 	bin/${APP}
 | |
| 
 | |
| ## size: displays the lines of code (LoC) count
 | |
| size:
 | |
| 	loc --exclude _sample_configs/ _site/ docs/ Makefile *.md
 | |
| 
 | |
| ## test: runs the test suite
 | |
| test: build
 | |
| 	go test ./...
 | |
| 
 | |
| ## uninstall: uninstals a locally-installed version
 | |
| uninstall:
 | |
| 	@rm ~/go/bin/${APP}
 |