#
# gc-utils script install program
#

PROGNAME = gc-utils

prefix  = $(HOME)
export prefix DESTDIR INSTALL VERSION

bindir  = $(prefix)/bin
libdir  = $(prefix)/lib

bindir_SQ  = $(subst ','\'',$(bindir))
libdir_SQ  = $(subst ','\'',$(libdir))
VERSION_SQ = $(subst .,\.,$(VERSION))
DESTDIR_SQ = $(subst ','\'',$(DESTDIR))

INSTALL = install
RM = rm
MKINSTALLDIRS = mkdir -p

scripts_src   = gc-import.sh gc-update.sh gc-commit.sh gc-multi-commit.sh gc-utils.sh
scripts       = $(scripts_src:%.sh=../build/%)
libraries_src = gc-sh-setup.sh
libraries     = $(libraries_src:%.sh=../build/%)

ifndef V
	QUIET_RM       =  echo '   ' RM    $f;
	QUIET_GEN      = @echo '   ' GEN   $(@:../build/%=%);
	QUIET_INSTALL  =  echo '   ' INS   $(f:../build/%=%);
endif

define generate-script
	cp $(@:../build/%=%.sh) $@ && sed -i -e 's,\$$VERSION\$$,$(VERSION_SQ),g;s,\$$PROGNAME\$$,$(PROGNAME),g;s,\$$LIBDIR\$$,$(DESTDIR_SQ)$(libdir_SQ),g' $@
endef

.PHONY: gen install uninstall

gen:: $(scripts)

$(scripts): $(libraries)
	$(QUIET_GEN) $(generate-script)

$(libraries):
	$(QUIET_GEN) $(generate-script)

install: $(scripts) install-lib
	@$(MKINSTALLDIRS) $(DESTDIR_SQ)$(bindir_SQ)
ifndef V
	@$(foreach f, $(scripts), $(QUIET_INSTALL) $(INSTALL) $f "$(DESTDIR_SQ)$(bindir_SQ)/$(f:../build/%=%)" ;)
else
	$(foreach f, $(scripts), $(INSTALL) $f "$(DESTDIR_SQ)$(bindir_SQ)/$(f:../build/%=%)" ;)
endif

install-lib: $(libraries)
	@$(MKINSTALLDIRS) $(DESTDIR_SQ)$(libdir_SQ)
ifndef V
	@$(foreach f, $(libraries), $(QUIET_INSTALL) $(INSTALL) $f "$(DESTDIR_SQ)$(libdir_SQ)/$(f:../build/%=%)" ;)
else
	$(foreach f, $(libraries), $(INSTALL) $f "$(DESTDIR_SQ)$(libdir_SQ)/$(f:../build/%=%)" ;)
endif

uninstall:
	@$(foreach f, $(scripts_src:%.sh=%), $(RM) '$(DESTDIR_SQ)$(bindir_SQ)/$f' && echo '   ' UNINS $f ;)
	@$(foreach f, $(libraries_src:%.sh=%), $(RM) '$(DESTDIR_SQ)$(libdir_SQ)/$f' && echo '   ' UNINS $f ;)
