mirror of
https://github.com/jorgebucaran/fisher
synced 2024-09-10 15:07:40 +02:00
62 lines
1.9 KiB
Makefile
62 lines
1.9 KiB
Makefile
SHELL:=/usr/bin/env bash -O nullglob
|
|
|
|
XDG_CONFIG_HOME ?= $$HOME/.config
|
|
FISH_CONFIG := $(XDG_CONFIG_HOME)/fish/config.fish
|
|
|
|
FISHER_HOME := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
|
|
FISHER_CONFIG := $(XDG_CONFIG_HOME)/fisherman
|
|
FISHER_CACHE := $(FISHER_CONFIG)/cache
|
|
FISHER_FILE := $(FISHER_CONFIG)/fishfile
|
|
|
|
MAN := $(FISHER_HOME)/man
|
|
MAN1 := $(wildcard $(MAN)/man1/*.md)
|
|
DOCS := $(MAN1:%.md=%.1)
|
|
|
|
INDEX := $(FISHER_CACHE)/.index
|
|
VERSION = `cat $(FISHER_HOME)/VERSION`
|
|
|
|
.PHONY: all test flush uninstall release
|
|
|
|
all: $(FISH_CONFIG) $(FISHER_CACHE) $(FISHER_FILE) $(DOCS)
|
|
@echo "** Reload your shell and type 'fisher' to get started **"
|
|
|
|
test:
|
|
fish -c "fishtape test/*.fish"
|
|
|
|
uninstall:
|
|
sed -E '/set (fisher_home|fisher_config) /d;/source \$$fisher_home/d' \
|
|
$(FISH_CONFIG) > $(FISH_CONFIG).tmp
|
|
mv $(FISH_CONFIG).tmp $(FISH_CONFIG)
|
|
$(call MSG,"Reload your shell to apply changes.")
|
|
|
|
release: $(FISHER_HOME)
|
|
if [ "`git -C $^ status --short --porcelain | xargs`" = "M VERSION" ]; then\
|
|
echo "`git -C $^ describe --abbrev=0 2>/dev/null || echo \*` -> $(VERSION)";\
|
|
sed "s/latest-v.\..\..-00B9FF/latest-v$(VERSION)-00B9FF/" $^/README.md > $^/README.md.swap;\
|
|
mv $^/README.md.swap $^/README.md;\
|
|
git -C $^ add README.md;\
|
|
git -C $^ add $^/VERSION;\
|
|
git -C $^ commit --quiet -m $(VERSION);\
|
|
git -C $^ tag $(VERSION) -m v$(VERSION) --force > /dev/null;\
|
|
else\
|
|
echo "Commit changes and update VERSION to tag a new release.";\
|
|
fi
|
|
|
|
$(FISH_CONFIG):
|
|
mkdir -p $(dir $@) && touch $@
|
|
echo "set fisher_home $(FISHER_HOME)" | sed "s|/$$||;s|$$HOME|~|" > $@.fisher
|
|
echo "set fisher_config $(FISHER_CONFIG)" | sed "s|$$HOME|~|" >> $@.fisher
|
|
echo "source \$$fisher_home/config.fish" >> $@.fisher
|
|
awk 'FNR==NR{ print; a[$$0]; next } !($$0 in a) || /^$$/' $@ $@.fisher > $@.tmp
|
|
mv $@.tmp $@ && rm $@.fisher
|
|
|
|
$(FISHER_CACHE):
|
|
mkdir -p $@
|
|
|
|
$(FISHER_FILE):
|
|
touch $@
|
|
|
|
%.1 : %.md
|
|
-@if type ronn 2>/dev/null 1>&2; then \
|
|
ronn --manual=fisherman --roff $? 1>&2 2> /dev/null;\
|
|
fi;\
|