# ──────────────────────────────────────────────────────────────
# XDG Base Directory Specification
# ──────────────────────────────────────────────────────────────
XDG_DATA_HOME ?= $(HOME)/.local/share
XDG_BIN_HOME  ?= $(HOME)/.local/bin

INSTALL_BIN   := $(XDG_BIN_HOME)
INSTALL_MAN   := $(XDG_DATA_HOME)/man/man1
INSTALL_DOC   := $(XDG_DATA_HOME)/doc/scripts-bash
INSTALL_YTDLL := $(XDG_DATA_HOME)/ytdll

# ──────────────────────────────────────────────────────────────
# Sources
# ──────────────────────────────────────────────────────────────
SCRIPTS_SH    := $(wildcard local/bin/*.sh)
SCRIPTS_OTHER := $(wildcard local/bin/*.php) \
                 $(filter-out $(wildcard local/bin/*.*),$(wildcard local/bin/*))

DOC_SRC   := $(wildcard local/share/doc/scripts-bash/*.md)
MAN_PAGES := $(patsubst local/share/doc/scripts-bash/%.md,local/share/man/man1/%,$(DOC_SRC))

# ──────────────────────────────────────────────────────────────
.PHONY: all build install uninstall clean

## Cible par défaut : installe tout dans ~/.local/
all: install

## build : génère les pages man depuis les .md (développeur, nécessite Pandoc)
build: $(MAN_PAGES)

local/share/man/man1/%: local/share/doc/scripts-bash/%.md
	@mkdir -p $(dir $@)
	pandoc -s $< -t man -o $@
	@echo "  MAN  $@"

## install : déploie tout dans ~/.local/ (aucune dépendance externe)
install:
	@[ -d "local/bin" ] || { echo "Erreur : lancer depuis la racine du projet scripts-bash"; exit 1; }
	@mkdir -p "$(INSTALL_BIN)" "$(INSTALL_MAN)" "$(INSTALL_DOC)" "$(INSTALL_YTDLL)/lib"
	@for f in $(SCRIPTS_SH); do \
		dest="$(INSTALL_BIN)/$$(basename "$${f%.sh}")"; \
		install -m 755 "$$f" "$$dest"; \
		echo "  BIN  $$dest"; \
	done
	@for f in $(SCRIPTS_OTHER); do \
		dest="$(INSTALL_BIN)/$$(basename "$$f")"; \
		install -m 755 "$$f" "$$dest"; \
		echo "  BIN  $$dest"; \
	done
	@for f in $(wildcard local/share/man/man1/*); do \
		install -m 644 "$$f" "$(INSTALL_MAN)/$$(basename "$$f")"; \
		echo "  MAN  $(INSTALL_MAN)/$$(basename "$$f")"; \
	done
	@for f in $(wildcard local/share/doc/scripts-bash/*); do \
		install -m 644 "$$f" "$(INSTALL_DOC)/$$(basename "$$f")"; \
		echo "  DOC  $(INSTALL_DOC)/$$(basename "$$f")"; \
	done
	@for f in $(wildcard local/share/ytdll/*); do \
		[ -f "$$f" ] || continue; \
		install -m 644 "$$f" "$(INSTALL_YTDLL)/$$(basename "$$f")"; \
		echo "  DATA $(INSTALL_YTDLL)/$$(basename "$$f")"; \
	done
	@for f in $(wildcard local/share/ytdll/lib/*); do \
		install -m 644 "$$f" "$(INSTALL_YTDLL)/lib/$$(basename "$$f")"; \
		echo "  DATA $(INSTALL_YTDLL)/lib/$$(basename "$$f")"; \
	done
	@path_line='export PATH="$$PATH:$$HOME/.local/bin"'; \
	if ! grep -qF "$$path_line" ~/.bashrc 2>/dev/null; then \
		echo "$$path_line" >> ~/.bashrc; \
		echo "  PATH ~/.bashrc ← ~/.local/bin (rechargez votre terminal)"; \
	fi
	@manpath_line='export MANPATH="$$(manpath):$$HOME/.local/share/man"'; \
	if ! grep -qF "$$manpath_line" ~/.bashrc 2>/dev/null; then \
		echo "$$manpath_line" >> ~/.bashrc; \
		echo "  MANPATH ~/.bashrc ← ~/.local/share/man (rechargez votre terminal)"; \
	fi
	@echo ""
	@echo "Installation terminée."

## uninstall : supprime les fichiers installés par 'make install'
uninstall:
	@[ -d "local/bin" ] || { echo "Erreur : lancer depuis la racine du projet scripts-bash"; exit 1; }
	@for f in $(SCRIPTS_SH); do \
		rm -fv "$(INSTALL_BIN)/$$(basename "$${f%.sh}")"; \
	done
	@for f in $(SCRIPTS_OTHER); do \
		rm -fv "$(INSTALL_BIN)/$$(basename "$$f")"; \
	done
	@for f in $(wildcard local/share/man/man1/*); do \
		rm -fv "$(INSTALL_MAN)/$$(basename "$$f")"; \
	done
	@for f in $(wildcard local/share/doc/scripts-bash/*); do \
		rm -fv "$(INSTALL_DOC)/$$(basename "$$f")"; \
	done
	@rm -rfv "$(INSTALL_YTDLL)"
	@echo "Désinstallation terminée."

## clean : supprime les pages man générées (dépôt local uniquement)
clean:
	@rm -f $(MAN_PAGES)
	@echo "Pages man supprimées."
