1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
-include Makefile.local
DESTDIR ?=
PREFIX ?= /usr/local
BINDIR ?= ${PREFIX}/bin
DATAROOTDIR ?= ${PREFIX}/share
MANDIR ?= ${DATAROOTDIR}/man
TARBALLDIR ?= target/release/tarball
TARBALLFORMAT=tar.gz
RM := rm
CARGO := cargo
SCDOC := scdoc
INSTALL := install
GIT := git
GPG := gpg
SED := sed
DEBUG := 0
ifeq ($(DEBUG), 0)
CARGO_OPTIONS := --release --locked
CARGO_TARGET := release
else
CARGO_OPTIONS :=
CARGO_TARGET := debug
endif
.PHONY: all dfrs test docs man completions clean install uninstall
all: dfrs test docs
dfrs:
$(CARGO) build $(CARGO_OPTIONS)
test:
$(CARGO) test $(CARGO_OPTIONS)
lint:
$(CARGO) fmt -- --check
$(CARGO) check
find . -name '*.rs' -exec touch {} +
$(CARGO) clippy --all -- -D warnings
docs: man completions
man: contrib/man/dfrs.1
contrib/man/%: contrib/man/%.scd
$(SCDOC) < $^ > $@
completions: dfrs
target/$(CARGO_TARGET)/dfrs completions bash | $(INSTALL) -Dm 644 /dev/stdin target/completion/bash/dfrs
target/$(CARGO_TARGET)/dfrs completions zsh | $(INSTALL) -Dm 644 /dev/stdin target/completion/zsh/_dfrs
target/$(CARGO_TARGET)/dfrs completions fish | $(INSTALL) -Dm 644 /dev/stdin target/completion/fish/dfrs.fish
clean:
$(RM) -rf target contrib/man/*.1
install: dfrs docs
$(INSTALL) -Dm 755 target/$(CARGO_TARGET)/dfrs -t $(DESTDIR)$(BINDIR)
$(INSTALL) -Dm 644 contrib/man/*.1 -t $(DESTDIR)$(MANDIR)/man1
$(INSTALL) -Dm 644 target/completion/bash/dfrs -t $(DESTDIR)$(DATAROOTDIR)/bash-completion/completions
$(INSTALL) -Dm 644 target/completion/zsh/_dfrs -t $(DESTDIR)$(DATAROOTDIR)/zsh/site-functions
$(INSTALL) -Dm 644 target/completion/fish/dfrs.fish -t $(DESTDIR)$(DATAROOTDIR)/fish/vendor_completions.d
uninstall:
$(RM) -f $(DESTDIR)$(BINDIR)/dfrs
$(RM) -f $(DESTDIR)$(MANDIR)/man1/dfrs.1
$(RM) -f $(DESTDIR)$(DATAROOTDIR)/bash-completion/completions/dfrs
$(RM) -f $(DESTDIR)$(DATAROOTDIR)/zsh/site-functions/_dfrs
$(RM) -f $(DESTDIR)$(DATAROOTDIR)/fish/vendor_completions.d/dfrs.fish
release: all
$(INSTALL) -d $(TARBALLDIR)
@read -p 'version> ' TAG && \
$(SED) "s|version = .*|version = \"$$TAG\"|" -i Cargo.toml && \
$(CARGO) build --release && \
$(GIT) commit --gpg-sign --message "version: release $$TAG" Cargo.toml Cargo.lock && \
$(GIT) tag --sign --message "version: release $$TAG" $$TAG && \
$(GIT) archive -o $(TARBALLDIR)/dfrs-$$TAG.$(TARBALLFORMAT) --format $(TARBALLFORMAT) --prefix=dfrs-$$TAG/ $$TAG && \
$(GPG) --detach-sign $(TARBALLDIR)/dfrs-$$TAG.$(TARBALLFORMAT)
|