PACKAGE = 'todo-webclient'
VERSION = '0.1'

PREFIX := /usr/local
BINDIR := $(PREFIX)/bin
LIBDIR := $(PREFIX)/lib
SHAREDIR := $(PREFIX)/share
INCLUDEDIR := $(PREFIX)/include
MANDIR := $(SHAREDIR)/man

Q := @

all: main.js style.css
	@:

main.js: main.bundle.js 
	@echo '[01;31m  MIN >   [01;37mmain.js[00m'
	$(Q)npx babel --minified main.bundle.js -o main.js


main.bundle.js: client/index.ls client/authws.ls client/bulma.ls client/card.ls client/column-edit-modal.ls client/column.ls client/font-awesome.ls client/modal.ls client/navbar.ls client/project-creation-modal.ls client/project.ls client/task-creation-modal.ls client/task.ls client/task-removal-modal.ls client/todowebsocket.ls client/users-cache.ls client/validation-modal.ls  
	@echo '[01;32m  BUN >   [01;37mmain.bundle.js[00m'
	$(Q)npx browserify -t browserify-livescript client/index.ls -o main.bundle.js


main.js.install: main.js
	@echo '[01;31m  IN >    [01;37m$(SHAREDIR)/todo-webclient/main.js[00m'
	$(Q)mkdir -p '$(DESTDIR)$(SHAREDIR)/todo-webclient'
	$(Q)install -m644 main.js $(DESTDIR)$(SHAREDIR)/todo-webclient/main.js

main.js.clean:
	@echo '[01;37m  RM >    [01;37mmain.js[00m'
	$(Q)rm -f main.js
	@echo '[01;37m  RM >    [01;37mmain.bundle.js[00m'
	$(Q)rm -f main.bundle.js


main.js.uninstall:
	@echo '[01;37m  RM >    [01;37m$(SHAREDIR)/todo-webclient/main.js[00m'
	$(Q)rm -f '$(DESTDIR)$(SHAREDIR)/todo-webclient/main.js'

style.css: client/style.sass 
	@echo '[01;33m  CSS >   [01;37mstyle.css[00m'
	$(Q)sassc client/style.sass > style.css


style.css.install: style.css
	@echo '[01;31m  IN >    [01;37m$(SHAREDIR)/todo-webclient/style.css[00m'
	$(Q)mkdir -p '$(DESTDIR)$(SHAREDIR)/todo-webclient'
	$(Q)install -m644 style.css $(DESTDIR)$(SHAREDIR)/todo-webclient/style.css

style.css.clean:
	@echo '[01;37m  RM >    [01;37mstyle.css[00m'
	$(Q)rm -f style.css

style.css.uninstall:
	@echo '[01;37m  RM >    [01;37m$(SHAREDIR)/todo-webclient/style.css[00m'
	$(Q)rm -f '$(DESTDIR)$(SHAREDIR)/todo-webclient/style.css'

$(DESTDIR)$(PREFIX):
	@echo '[01;35m  DIR >   [01;37m$(PREFIX)[00m'
	$(Q)mkdir -p $(DESTDIR)$(PREFIX)
$(DESTDIR)$(BINDIR):
	@echo '[01;35m  DIR >   [01;37m$(BINDIR)[00m'
	$(Q)mkdir -p $(DESTDIR)$(BINDIR)
$(DESTDIR)$(LIBDIR):
	@echo '[01;35m  DIR >   [01;37m$(LIBDIR)[00m'
	$(Q)mkdir -p $(DESTDIR)$(LIBDIR)
$(DESTDIR)$(SHAREDIR):
	@echo '[01;35m  DIR >   [01;37m$(SHAREDIR)[00m'
	$(Q)mkdir -p $(DESTDIR)$(SHAREDIR)
$(DESTDIR)$(INCLUDEDIR):
	@echo '[01;35m  DIR >   [01;37m$(INCLUDEDIR)[00m'
	$(Q)mkdir -p $(DESTDIR)$(INCLUDEDIR)
$(DESTDIR)$(MANDIR):
	@echo '[01;35m  DIR >   [01;37m$(MANDIR)[00m'
	$(Q)mkdir -p $(DESTDIR)$(MANDIR)
install: main.js.install style.css.install
	@:

uninstall: main.js.uninstall style.css.uninstall
	@:

clean: main.js.clean style.css.clean
distclean: clean
dist: dist-gz dist-xz dist-bz2
	$(Q)rm -- $(PACKAGE)-$(VERSION)

distdir:
	$(Q)rm -rf -- $(PACKAGE)-$(VERSION)
	$(Q)ln -s -- . $(PACKAGE)-$(VERSION)

dist-gz: $(PACKAGE)-$(VERSION).tar.gz
$(PACKAGE)-$(VERSION).tar.gz: distdir
	@echo '[01;33m  TAR >   [01;37m$(PACKAGE)-$(VERSION).tar.gz[00m'
	$(Q)tar czf $(PACKAGE)-$(VERSION).tar.gz \
		$(PACKAGE)-$(VERSION)/client/index.ls \
		$(PACKAGE)-$(VERSION)/client/style.sass \
		$(PACKAGE)-$(VERSION)/client/authws.ls \
		$(PACKAGE)-$(VERSION)/client/bulma.ls \
		$(PACKAGE)-$(VERSION)/client/card.ls \
		$(PACKAGE)-$(VERSION)/client/column-edit-modal.ls \
		$(PACKAGE)-$(VERSION)/client/column.ls \
		$(PACKAGE)-$(VERSION)/client/font-awesome.ls \
		$(PACKAGE)-$(VERSION)/client/modal.ls \
		$(PACKAGE)-$(VERSION)/client/navbar.ls \
		$(PACKAGE)-$(VERSION)/client/project-creation-modal.ls \
		$(PACKAGE)-$(VERSION)/client/project.ls \
		$(PACKAGE)-$(VERSION)/client/task-creation-modal.ls \
		$(PACKAGE)-$(VERSION)/client/task.ls \
		$(PACKAGE)-$(VERSION)/client/task-removal-modal.ls \
		$(PACKAGE)-$(VERSION)/client/todowebsocket.ls \
		$(PACKAGE)-$(VERSION)/client/users-cache.ls \
		$(PACKAGE)-$(VERSION)/client/validation-modal.ls

dist-xz: $(PACKAGE)-$(VERSION).tar.xz
$(PACKAGE)-$(VERSION).tar.xz: distdir
	@echo '[01;33m  TAR >   [01;37m$(PACKAGE)-$(VERSION).tar.xz[00m'
	$(Q)tar cJf $(PACKAGE)-$(VERSION).tar.xz \
		$(PACKAGE)-$(VERSION)/client/index.ls \
		$(PACKAGE)-$(VERSION)/client/style.sass \
		$(PACKAGE)-$(VERSION)/client/authws.ls \
		$(PACKAGE)-$(VERSION)/client/bulma.ls \
		$(PACKAGE)-$(VERSION)/client/card.ls \
		$(PACKAGE)-$(VERSION)/client/column-edit-modal.ls \
		$(PACKAGE)-$(VERSION)/client/column.ls \
		$(PACKAGE)-$(VERSION)/client/font-awesome.ls \
		$(PACKAGE)-$(VERSION)/client/modal.ls \
		$(PACKAGE)-$(VERSION)/client/navbar.ls \
		$(PACKAGE)-$(VERSION)/client/project-creation-modal.ls \
		$(PACKAGE)-$(VERSION)/client/project.ls \
		$(PACKAGE)-$(VERSION)/client/task-creation-modal.ls \
		$(PACKAGE)-$(VERSION)/client/task.ls \
		$(PACKAGE)-$(VERSION)/client/task-removal-modal.ls \
		$(PACKAGE)-$(VERSION)/client/todowebsocket.ls \
		$(PACKAGE)-$(VERSION)/client/users-cache.ls \
		$(PACKAGE)-$(VERSION)/client/validation-modal.ls

dist-bz2: $(PACKAGE)-$(VERSION).tar.bz2
$(PACKAGE)-$(VERSION).tar.bz2: distdir
	@echo '[01;33m  TAR >   [01;37m$(PACKAGE)-$(VERSION).tar.bz2[00m'
	$(Q)tar cjf $(PACKAGE)-$(VERSION).tar.bz2 \
		$(PACKAGE)-$(VERSION)/client/index.ls \
		$(PACKAGE)-$(VERSION)/client/style.sass \
		$(PACKAGE)-$(VERSION)/client/authws.ls \
		$(PACKAGE)-$(VERSION)/client/bulma.ls \
		$(PACKAGE)-$(VERSION)/client/card.ls \
		$(PACKAGE)-$(VERSION)/client/column-edit-modal.ls \
		$(PACKAGE)-$(VERSION)/client/column.ls \
		$(PACKAGE)-$(VERSION)/client/font-awesome.ls \
		$(PACKAGE)-$(VERSION)/client/modal.ls \
		$(PACKAGE)-$(VERSION)/client/navbar.ls \
		$(PACKAGE)-$(VERSION)/client/project-creation-modal.ls \
		$(PACKAGE)-$(VERSION)/client/project.ls \
		$(PACKAGE)-$(VERSION)/client/task-creation-modal.ls \
		$(PACKAGE)-$(VERSION)/client/task.ls \
		$(PACKAGE)-$(VERSION)/client/task-removal-modal.ls \
		$(PACKAGE)-$(VERSION)/client/todowebsocket.ls \
		$(PACKAGE)-$(VERSION)/client/users-cache.ls \
		$(PACKAGE)-$(VERSION)/client/validation-modal.ls

help:
	@echo '[01;37m :: todo-webclient-0.1[00m'
	@echo ''
	@echo '[01;37mGeneric targets:[00m'
	@echo '[00m    - [01;32mhelp          [37m Prints this help message.[00m'
	@echo '[00m    - [01;32mall           [37m Builds all targets.[00m'
	@echo '[00m    - [01;32mdist          [37m Creates tarballs of the files of the project.[00m'
	@echo '[00m    - [01;32minstall       [37m Installs the project.[00m'
	@echo '[00m    - [01;32mclean         [37m Removes compiled files.[00m'
	@echo '[00m    - [01;32muninstall     [37m Deinstalls the project.[00m'
	@echo ''
	@echo '[01;37mCLI-modifiable variables:[00m'
	@echo '    - [01;34mPREFIX        [37m ${PREFIX}[00m'
	@echo '    - [01;34mBINDIR        [37m ${BINDIR}[00m'
	@echo '    - [01;34mLIBDIR        [37m ${LIBDIR}[00m'
	@echo '    - [01;34mSHAREDIR      [37m ${SHAREDIR}[00m'
	@echo '    - [01;34mINCLUDEDIR    [37m ${INCLUDEDIR}[00m'
	@echo '    - [01;34mMANDIR        [37m ${MANDIR}[00m'
	@echo ''
	@echo '[01;37mProject targets: [00m'
	@echo '    - [01;33mmain.js       [37m livescript[00m'
	@echo '    - [01;33mstyle.css     [37m sass[00m'
	@echo ''
	@echo '[01;37mMakefile options:[00m'
	@echo '    - gnu:           false'
	@echo '    - colors:        true'
	@echo ''
	@echo '[01;37mRebuild the Makefile with:[00m'
	@echo '    zsh ./build.zsh -c'
.PHONY: all  clean distclean dist install uninstall help

