# destination directory name
PLUGIN_PATHS := $(addprefix $(PLUGINDIR)/, $(PLUGINS))
# list of installed repositories
ACCOUNTS_EXIST := $(wildcard $(PLUGINDIR)/*/) # plugin/account1/ plugin/account2/ plugin/account3/ ...
REPOS_INSTALLED_PATHS := $(wildcard $(PLUGINDIR)/*/*) # plugin/account1/plug1 plugin/account2/plug1 ...
GARBAGE_ACCOUNTS_PATHS := $(filter-out $(dir $(PLUGINS)), $(notdir $(ACCOUNTS_EXIST))) # accountN/ accountM/ ...
GARBAGE_REPOS_PATHS := $(filter-out $(PLUGIN_PATHS), $(REPOS_INSTALLED_PATHS)) # plugin/accountN/plugN ...
GARBAGES := $(GARBAGE_REPOS_PATHS) $(GARBAGE_ACCOUNTS_PATHS)
NEOVIM_PREFIX := ~/.local
$(PLUGINDIR)/%: | $(PLUGINDIR)/ ; git clone --depth 1 $(GITHUB_URL)/$* $@
%/plug-sync: $(PLUGINDIR)/% ; cd $< && git pull
%/plug-rm:
ifneq ($(wildcard $(PLUGINDIR)/$*),) # check if file exists
rm -rf $(PLUGINDIR)/$*
endif
plug-install: $(PLUGIN_PATHS)
plug-sync: $(addsuffix /plug-sync, $(PLUGINS))
plug-gc: ; rm -rf $(GARBAGES)
plug-clean: $(addsuffix /plug-rm, $(PLUGINS))
plug-update: plug-sync
$(MAKE) -f make/setup-treesitter.mk PREFIX=$(NEOVIM_PREFIX)
setup: plug-update lib-build