SRC := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))

include ../lib/shared.mk
ZSH_DIR :=  ~/.zsh
ZPLUG_DIR :=  ~/.zplug

install: | init update

init:
	$(info => Setting up zsh)
ifeq ($(shell [ ! -e $(ZPLUG_DIR) ] $(return_val_truthy) ), true)
	export ZPLUG_HOME=$(ZPLUG_DIR) \
  ; git clone https://github.com/zplug/zplug $(ZPLUG_DIR) \
  ; source ~/.zplug/init.zsh && zplug update --self \
  ; $(report) "zplug installed"
endif
	$(mk_link) $(SRC) ~/.zsh
	$(mk_link) $(ZSH_DIR)/zshrc ~/.zshrc
	$(mk_link) $(ZSH_DIR)/zlogin ~/.zlogin
	$(mk_link) $(ZSH_DIR)/zprofile ~/.zprofile
	$(mk_link) $(ZSH_DIR)/zshenv ~/.zshenv
	$(mk_link) $(ZSH_DIR)/zlogout ~/.zlogout
	chmod 700 $(ZSH_DIR)/transient


update:
	[ -e $(ZPLUG_DIR) ] \
	&& ( echo "=> Updating zplug" \
	   source $(ZPLUG_DIR)/init.zsh ; source $(ZSH_DIR)/zplug ; zplug install ; zplug update ) \
	||  $(report) warn "No zplug install detected. Skipping."

remove:
ifeq ($(shell [ -e $(ZPLUG_DIR) ] $(return_val_truthy) ), true)
	$(report) warn "Leaving $(ZPLUG_DIR) directory."
endif
	$(info => Removing zsh)
	$(rm_link) ~/.zprofile
	$(rm_link) ~/.zlogin
	$(rm_link) ~/.zshrc
	$(rm_link) ~/.zsh
	$(rm_link) ~/.zshenv
	$(mk_link) $(ZSH_DIR)/zlogout ~/.zlogout