#
# Makefile for packaging COTS component of vitamui solution
#

# Args parsing with default values
NAME                := mongo-express
VERSION             := 3.4.9
DEPENDENCIES        := nodejs,npm

# Src configuration:
SRC_DIR             := $(abspath  ./src)
BIN                 =  $(abspath $(SRC_DIR)/node_modules/mongo-express/app.js)

# Staging root configuration
DESTDIR             := $(abspath ./package-stage/)
STAGING_ROOT        := $(abspath $(DESTDIR)/)
FPM                 := /usr/local/bin/fpm
USER                := vitamuidb
GROUP               := vitamui
PACKAGING_MAKEFILE  := ../../tools/packaging/Makefile

# Package metas
COPYRIGHT           = VitamUI Copyright 2018 VITAM_UI
COMMIT_ID           = $(shell  git rev-parse --short HEAD)
BRANCHE             = $(shell  git rev-parse --abbrev-ref HEAD)
DESCRIPTION         = $(NAME) package for vitamui solution. Branch: $(BRANCHE), commit: $(COMMIT_ID)

# Install params
SYSTEMD_DIR         := /usr/lib/systemd/system/
VITAMUI_DIRS           =  app bin lib script conf log data tmp run defaults
PACKAGING_DIR       := $(dir $(lastword $(MAKEFILE_LIST)))
TEMPLATE_TMP_DIR    := $(abspath ./package-templates/)
TEMPLATE_SRC        = $(wildcard $(PACKAGING_DIR)/templates/*)
RPM_OUTPUT_PATH     := vitamui-$(NAME)-$(VERSION).rpm

# fpm packaging default args
FPM_PACK_ARGS               = -f -d "$(DEPENDENCIES)" --description "$(DESCRIPTION)"
FPM_PACK_META               = --license "$(COPYRIGHT)" -n "vitamui-$(NAME)" -v $(VERSION)
FPM_PACK_INSTALL_SCRIPTS    = --before-install "$(TEMPLATE_TMP_DIR)/before-install.sh" --after-install "$(TEMPLATE_TMP_DIR)/after-install.sh"
FPM_PACK_REMOVE_SCRIPTS     = --before-remove "$(TEMPLATE_TMP_DIR)/before-remove.sh" --after-remove "$(TEMPLATE_TMP_DIR)/after-remove.sh"

#
# Imports from packaging Makefiles
#

clean:
	$(MAKE) -f $(PACKAGING_MAKEFILE) NAME=$(NAME) VERSION=$(VERSION) RPM_OUTPUT_PATH=$(RPM_OUTPUT_PATH) $@

stage:
	$(MAKE) -f $(PACKAGING_MAKEFILE) NAME=$(NAME) VERSION=$(VERSION) STAGING_ROOT=$(STAGING_ROOT) $@

vitamui-dirs:
	$(MAKE) -f $(PACKAGING_MAKEFILE) NAME=$(NAME) VERSION=$(VERSION) $@

reset: clean
	@rm -Rf $(SRC_DIR)


#
# COTS src fetching:
#

# Prepare src dir
$(SRC_DIR):
	@mkdir -p $(SRC_DIR)

# Install node module

# Extract RPM to get pre  staged install files from logstash
$(BIN): $(SRC_DIR)
	@cp ../package.json $(SRC_DIR);  cd $(SRC_DIR) ; npm install mongo-express

source: $(BIN)

#
# COTS stage install
#

template-files:
	# Applying packaging/Makefile first:
	@$(MAKE) -f $(PACKAGING_MAKEFILE) NAME=$(NAME) VERSION=$(VERSION) $@

	# Override it with current directory template dir
	@mkdir -p $(TEMPLATE_TMP_DIR)
	@for fic in  $(TEMPLATE_SRC) ; \
	do \
		sed  \
			-e "s/__NAME__/$(NAME)/g" \
			-e "s/__JAR_FILE__/$(JAR_FILE)/g" \
			-e "s/__VERSION__/$(VERSION)/g" \
			-e "s/__USER__/$(USER)/g" \
			-e "s/__GROUP__/$(GROUP)/g" \
			-e "s/__ARGS__/$(ARGS)/g" \
			$$fic >  $(TEMPLATE_TMP_DIR)/`basename $$fic`; \
	done

install:  stage vitamui-dirs template-files source
	@mkdir   -p -m 750 $(abspath $(STAGING_ROOT)/$(SYSTEMD_DIR)/)
	@install -m 644 $(TEMPLATE_TMP_DIR)/vitamui-mongo-express.service $(abspath $(STAGING_ROOT)/$(SYSTEMD_DIR)/vitamui-mongo-express.service)
	# Now install the all node_modules in /vitamui/app/$(NAME)
	@cp -R -t $(abspath $(STAGING_ROOT)/vitamui/app/$(NAME)/) $(SRC_DIR)/*
	# Install config environnement vars:
	install -m 644 $(TEMPLATE_TMP_DIR)/vitamui-mongo-express-default-env.sh $(abspath $(STAGING_ROOT)/vitamui/defaults/$(NAME)/env.sh)

rpm: install
	@$(FPM) -s dir $(FPM_PACK_ARGS) $(FPM_PACK_META) $(FPM_PACK_INSTALL_SCRIPTS) $(FPM_PACK_REMOVE_SCRIPTS) -t rpm -p $(RPM_OUTPUT_PATH)  "$(STAGING_ROOT)/=/"

#
# COTS Packaging
#

.PHONY: clean stage vitamui-dirs source template-files build install reset