tools

various tools I have been using throughout the years
Log | Files | Refs | README | LICENSE

Makefile (1555B)


      1 CARGO   ?= cargo
      2 PREFIX  ?= /usr/local
      3 BINDIR  ?= $(PREFIX)/bin
      4 MANDIR  ?= $(PREFIX)/share/man
      5 DESTDIR ?=
      6 
      7 BIN     := dam
      8 MANPAGE := dam.1
      9 
     10 TARGET  := $(shell git rev-parse --show-toplevel)/target/release/$(BIN)
     11 
     12 .DEFAULT_GOAL := help
     13 
     14 .PHONY: build
     15 build: ## Build a release binary
     16 	$(CARGO) build --release
     17 
     18 .PHONY: debug
     19 debug: ## Build a debug binary
     20 	$(CARGO) build
     21 
     22 .PHONY: run
     23 run: ## Run dam (pass args with ARGS=...)
     24 	$(CARGO) run -- $(ARGS)
     25 
     26 .PHONY: test
     27 test: ## Run the test suite
     28 	$(CARGO) test
     29 
     30 .PHONY: check
     31 check: ## Type-check without building artifacts
     32 	$(CARGO) check
     33 
     34 .PHONY: man-gen
     35 man-gen: ## Regenerate dam.1 from dam's CLI (clap_mangen)
     36 	$(CARGO) run --quiet --example mangen
     37 
     38 .PHONY: man
     39 man: ## Open a preview of dam.1
     40 	man ./$(MANPAGE)
     41 
     42 .PHONY: lint
     43 lint: ## Run linters (fmt, clippy, man)
     44 	$(CARGO) fmt
     45 	$(CARGO) clippy --all-targets -- -D warnings
     46 	mandoc -T lint $(MANPAGE)
     47 
     48 .PHONY: install
     49 install: build ## Install the binary and man page under PREFIX
     50 	install -d $(DESTDIR)$(BINDIR) $(DESTDIR)$(MANDIR)/man1
     51 	install -m 0755 $(TARGET) $(DESTDIR)$(BINDIR)/$(BIN)
     52 	install -m 0644 $(MANPAGE) $(DESTDIR)$(MANDIR)/man1/$(MANPAGE)
     53 
     54 .PHONY: uninstall
     55 uninstall: ## Remove the installed binary and man page
     56 	rm -f $(DESTDIR)$(BINDIR)/$(BIN)
     57 	rm -f $(DESTDIR)$(MANDIR)/man1/$(MANPAGE)
     58 
     59 .PHONY: clean
     60 clean: ## Remove build artifacts
     61 	$(CARGO) clean
     62 
     63 .PHONY: help
     64 help: ## List available targets
     65 	@grep -hE '^[a-zA-Z_-]+:.*?## ' $(MAKEFILE_LIST) \
     66 		| awk 'BEGIN {FS = ":.*?## "} {printf "  \033[36m%-12s\033[0m %s\n", $$1, $$2}'