1SKILL_DIR ?= $(HOME)/.config/crush/skills
2SKILLS := $(patsubst skills/%/,%,$(wildcard skills/*/))
3
4UNINSTALL_TARGETS := $(addprefix uninstall-,$(SKILLS))
5
6.PHONY: list all uninstall $(SKILLS) $(UNINSTALL_TARGETS)
7
8list:
9 @echo "Available skills:"
10 @printf " %s\n" $(SKILLS)
11 @echo ""
12 @echo "Install with: make <skill-name> [SKILL_DIR=path]"
13 @echo "Default target: $(SKILL_DIR)"
14
15all: $(SKILLS)
16
17$(SKILLS):
18 @mkdir -p "$(SKILL_DIR)"
19 @ln -sfn "$(CURDIR)/skills/$@" "$(SKILL_DIR)/$@"
20 @echo "Installed $@ → $(SKILL_DIR)/$@"
21
22$(UNINSTALL_TARGETS):
23 $(eval SKILL := $(patsubst uninstall-%,%,$@))
24 @if [ -e "$(SKILL_DIR)/$(SKILL)" ]; then \
25 rm -f "$(SKILL_DIR)/$(SKILL)"; \
26 echo "Uninstalled $(SKILL) from $(SKILL_DIR)"; \
27 else \
28 echo "Warning: $(SKILL) not found in $(SKILL_DIR)" >&2; \
29 fi
30
31uninstall:
32 @for skill in $(SKILLS); do \
33 if [ -e "$(SKILL_DIR)/$$skill" ]; then \
34 rm -f "$(SKILL_DIR)/$$skill"; \
35 echo "Uninstalled $$skill from $(SKILL_DIR)"; \
36 fi; \
37 done