#!/usr/bin/make -f
# -*- makefile -*-
# Sample debian/rules that uses debhelper.
# This file was originally written by Joey Hess and Craig Small.
# As a special exception, when this file is copied by dh-make into a
# dh-make output file, you may use that output file without restriction.
# This special exception was added by Craig Small in version 0.37 of dh-make.
PHONY: override_dh_auto_build override_dh_auto_install
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
export DH_VERBOSE=1

TMP=$(CURDIR)/debian/tmp/

export VERSION=$(shell egrep '^VERSION' VERSION | cut -f 2 -d '=')
export GITBRANCH=$(shell egrep '^GITBRANCH' VERSION | cut -f 2 -d '=')
export GITCOMMIT=$(shell egrep '^GITCOMMIT' VERSION | cut -f 2 -d '=')
export COMPONENT_VERSION=$(shell egrep '^COMPONENT_VERSION' VERSION | cut -f 2 -d '=')

%:
	dh $@ --with-systemd

override_dh_auto_clean:
	# Skip upstream make clean completely

override_dh_builddeb:
	dh_builddeb -- -Zgzip

override_dh_auto_test override_dh_compress override_dh_fixperms override_dh_strip:

override_dh_auto_build:
	@echo "RULES.$@"
	export PATH=/usr/local/go/bin:${PATH}
	export GOROOT="/usr/local/go/"
	export GOBINPATH="/usr/local/go/bin"
	mkdir -p build/src/github.com/percona/percona-clustersync-mongodb
	cp -r `ls | grep -v build` build/src/github.com/percona/percona-clustersync-mongodb/
	( \
	  cd build/src/github.com/percona/percona-clustersync-mongodb/ && \
	  export GO111MODULE=on; \
	  export GOMODCACHE=${PWD}/go-mod-cache; \
	  for i in 1 2 3; do \
		go mod tidy && go mod download && break; \
		echo "go mod commands failed, retrying in 10 seconds..."; \
		sleep 10; \
	  done; \
	  make build \
	); \
	touch $@

override_dh_auto_install:
	@echo "RULES.$@"
	mkdir -p $(TMP)
	mkdir -p $(TMP)/default
	cd build/src/github.com/percona/percona-clustersync-mongodb/bin && cp pcsm $(TMP)/pcsm
	cp -f packaging/conf/pcsm.env  $(TMP)/default/pcsm
	cp -f packaging/conf/pcsm.service $(TMP)/pcsm.service
	cp -f LICENSE $(TMP)/LICENSE
	# CycloneDX 1.6 SBOM for the .deb. Scope = Go binaries in $(TMP); filename
	# is self-identifying when extracted from /usr/share/doc/. Catalogers
	# limited to go-module-binary-cataloger (tarball-equivalent scope); file
	# catalogers disabled to keep package-level granularity.
	syft scan "dir:$(TMP)" \
		--override-default-catalogers go-module-binary-cataloger \
		--select-catalogers "-file" \
		--source-name "percona-clustersync-mongodb" \
		--source-version "$(VERSION)" \
		-o "cyclonedx-json@1.6=$(TMP)/percona-clustersync-mongodb-$(VERSION).cdx.json"
	# Overwrite syft's auto-generated metadata.component (type=file, opaque
	# bom-ref) with a proper application identity including a deb PURL.
	jq --arg purl "pkg:deb/percona-clustersync-mongodb@$(VERSION)" --arg ver "$(VERSION)" '.metadata.component = {"bom-ref": $$purl, "type": "application", "name": "percona-clustersync-mongodb", "version": $$ver, "purl": $$purl}' \
		$(TMP)/percona-clustersync-mongodb-$(VERSION).cdx.json > $(TMP)/sbom.tmp \
		&& mv $(TMP)/sbom.tmp $(TMP)/percona-clustersync-mongodb-$(VERSION).cdx.json
	test "$$(jq '.components | length' $(TMP)/percona-clustersync-mongodb-$(VERSION).cdx.json)" -ge 10 \
		|| { echo "ERROR: DEB SBOM has too few components" >&2; exit 1; }
	ls -la $(TMP)

override_dh_systemd_start:
	dh_systemd_enable --name=pcsm pcsm.service
	dh_systemd_start --restart-after-upgrade
