# Makefile for AGrandTech EMS project

ProjectL = omc
ProjectU = OMC
PROJECT = $(ProjectL)
VERSION = 2.2503.2
RelDate = `date +%Y%m%d`
Release = $(RelDate)
RelVer = $(VERSION)-$(RelDate)
PLATFORM = amd64
ARMPLATFORM = aarch64
GitLocalRoot = $(HOME)/omc.git
EmsBuildRoot=$(GitLocalRoot)/build.ems
BuildDir = $(EmsBuildRoot)/build
CustomizedDir = $(EmsBuildRoot)/customized
BuildOMCDir = $(BuildDir)/usr/local/omc
BuildOMCBinDir = $(BuildOMCDir)/bin
BuildOMCEtcDir = $(BuildOMCDir)/etc
BuildLibDir = $(BuildDir)/lib
BuildLibSystemDir = $(BuildLibDir)/systemd/system
DebBuildDir = $(EmsBuildRoot)/debbuild
DebBuildOMCDir = $(EmsBuildRoot)/debbuild/usr/local/omc
DebFEBuildDir = $(EmsBuildRoot)/debbuild/usr/local/omc/htdocs
DebBuild2204Dir = $(EmsBuildRoot)/debbuild/22.04
DebBuild2204OMCDir = $(EmsBuildRoot)/debbuild/22.04/usr/local/omc
DebFEBuild2204Dir = $(EmsBuildRoot)/debbuild/22.04/usr/local/omc/htdocs
RpmBuildDir = $(EmsBuildRoot)/rpmbuild
RpmFEBuildDir = $(RpmBuildDir)/BUILD/usr/local/omc/htdocs
OmcInstallDir = /usr/local/omc
ReleaseDir = $(EmsBuildRoot)/release
EmsBEDir = $(GitLocalRoot)/be.ems
ConfigEtcDir = $(EmsBEDir)/config/etc
ConfigSystemdDir = $(EmsBEDir)/config/systemd
EmsFEDir = $(GitLocalRoot)/fe.ems
EmsFEVue3Dir = $(GitLocalRoot)/fe.ems.vue3/dist
LibDir = $(EmsBEDir)/lib
RESTAGENT = restagent
SshSvcBin = sshsvc
RestagentDir = $(EmsBEDir)/$(RESTAGENT)
SshSvcDir =  $(EmsBEDir)/$(SshSvcBin)
DBSQLSrcDir = $(EmsBEDir)/database
MiscDir = $(EmsBEDir)/misc
FrontBuildDir = $(BuildOMCDir)/htdocs
FrontSrcDir = $(EmsBEDir)/front
ReleaseDebs = $(ReleaseDir)/debs/$(PLATFORM)
BinWriterDir = $(HOME)/bin
ifeq ($(shell grep VERSION_ID /etc/os-release), VERSION_ID="22.04")
DebBuildDir := $(DebBuild2204Dir)
DebBuildOMCDir := $(DebBuild2204OMCDir)
DebFEBuildDir := $(DebFEBuild2204Dir)
#DebPkgFile := $(PROJECT)-$(VERSION)-22.04-$(Release).$(PLATFORM).deb
DebPkgFile := $(PROJECT)-r$(VERSION)-$(Release)-ub22.deb
DebPkgFileBA := $(PROJECT)-r$(VERSION)-$(Release)-ub22-ba.deb
else ifeq ($(shell grep VERSION_ID /etc/os-release), VERSION_ID="18.04")
DebPkgFile := $(PROJECT)-r$(VERSION)-$(Release)-ub18.deb
DebPkgFileBA := $(PROJECT)-r$(VERSION)-$(Release)-ub18-ba.deb
endif

.PHONY: all $(RESTAGENT) $(SshSvcBin)
all: $(RESTAGENT) $(SshSvcBin)
	cd $(RestagentDir)
	go build -o $(RESTAGENT) -v -ldflags "-s -w -X 'be.ems/lib/conifg.Version=$(RelVer)' \
		-X '$(LibDir)/conifg.BuildTime=`date`' \
		-X '$(LibDir)/conifg.GoVer=`go version`'"
	cd $(SshSvcDir)
	go build -o $(SshSvcBin) -v -ldflags "-s -w -X '$(LibDir)/conifg.Version=$(RelVer)' \
		-X '$(LibDir)/conifg.BuildTime=`date`' \
		-X '$(LibDir)/conifg.GoVer=`go version`'"

clean:
	rm  ./restagent/$(RESTAGENT) $(SshSvcDir)/$(SshSvcBin)

dist: 
	tar -zvcPf $(ReleaseDir)/$(PROJECT)-src-$(VERSION).tar.gz \
		../lib \
		../restagent \
		../initems \
		../database \
		../docs \
		../misc \
		../config \
		--exclude=../restagent/restagent \
		--exclude=../initems/initems 

pre_build: $(BINNAME) 
	# clear build cache
	rm -rf $(FrontBuildDir)/front/*
	rm -rf $(DebFEBuildDir)/front/*
	rm -rf $(DebBuildDir)/usr/local/omc/etc/db/*

	cp -rf $(RestagentDir)/$(RESTAGENT) $(BuildOMCBinDir)
	cp -rf $(SshSvcDir)/$(SshSvcBin) $(BuildOMCBinDir)	
	cp -rf $(MiscDir)/* $(BuildOMCBinDir)
	cp -rf $(ConfigEtcDir)/* $(BuildOMCEtcDir)
	rm -rf $(BuildOMCEtcDir)/db/*
	cp -rf $(DBSQLSrcDir)/* $(BuildOMCEtcDir)/db/
	cp -rf $(ConfigSystemdDir)/* $(BuildLibSystemDir)
	cp -rf $(EmsFEVue3Dir)/* $(FrontBuildDir)/front >/dev/null
	chmod 755 $(BuildOMCBinDir)/*
	chmod 755 $(DebBuildDir)/DEBIAN/preinst	
	chmod 755 $(DebBuildDir)/DEBIAN/postinst
	chmod 755 $(DebBuildDir)/DEBIAN/postrm
	cp -rf $(BuildDir)/*  $(DebBuildDir)/

replace_chinese:
	@find $(DebBuildOMCDir)/etc/db -type f -name '*.sql' -exec sed -i '' 's/[一-龥]//g' {} +
	@echo "Replace all chinese charecter."

deb: pre_build
	cp -rf $(CustomizedDir)/agt.d $(DebBuildOMCDir)/static
	cp -rf $(CustomizedDir)/omc.d $(DebBuildOMCDir)/static
	#cp -rf $(BuildDir)/nginx/*  $(DebBuildDir)/etc/nginx/conf.d
	#cp -rf $(BuildDir)/systemd/*.service  $(DebBuildDir)/lib/systemd/system/
	chmod +x $(DebBuildDir)/usr/local/omc/bin/*
	#sed -i.bak 's/YYYYMMDD/$(shell date +"%Y%m%d")/g' $(DebBuildDir)/DEBIAN/control
	sed -i 's/YYYYMMDD/$(shell date +"%Y%m%d")/g' $(DebBuildDir)/DEBIAN/control
	perl -0777 -i -pe 's/ne:\n  user: root/ne:\n  user: omcuser/g' $(DebBuildDir)/usr/local/omc/etc/default/restconf.yaml
	dpkg -b $(DebBuildDir) $(ReleaseDebs)/$(DebPkgFile)

badeb: pre_build replace_chinese 
	cp -rf $(CustomizedDir)/ba.d $(DebBuildOMCDir)/static
	#cp -rf $(BuildDir)/nginx/*  $(DebBuildDir)/etc/nginx/conf.d
	#cp -rf $(BuildDir)/systemd/*.service  $(DebBuildDir)/lib/systemd/system/
	chmod +x $(DebBuildDir)/usr/local/omc/bin/*
	#sed -i.bak 's/YYYYMMDD/$(shell date +"%Y%m%d")/g' $(DebBuildDir)/DEBIAN/control
	sed -i 's/YYYYMMDD/$(shell date +"%Y%m%d")/g' $(DebBuildDir)/DEBIAN/control
	perl -0777 -i -pe 's/ne:\n  user: root/ne:\n  user: omcuser/g' $(DebBuildDir)/usr/local/omc/etc/default/restconf.yaml
	dpkg -b $(DebBuildDir) $(ReleaseDebs)/$(DebPkgFileBA)

rpm: $(BINNAME)
	# clear build cache
	rm -rf $(FrontBuildDir)/front/*
	rm -rf $(RpmFEBuildDir)/front/*
	rm -rf $(RpmBuildDir)/BUILD/usr/local/omc/etc/db/*

	cp -rf $(RestagentDir)/$(RESTAGENT) $(BuildOMCBinDir)
	cp -rf $(SshSvcDir)/$(SshSvcBin) $(BuildOMCBinDir)
	cp -rf $(MiscDir)/* $(BuildOMCBinDir)
#	rm -rf $(BinDir2)/ne-hosts
	cp -rf $(ConfigEtcDir)/* $(BuildOMCEtcDir)
	rm -rf $(BuildOMCEtcDir)/db/*
	cp -rf $(DBSQLSrcDir)/* $(BuildOMCEtcDir)/db/
	cp -rf $(ConfigSystemdDir)/* $(BuildLibSystemDir)		
	#unzip $(FrontSrcDir)/front.zip -d $(FrontBuildDir) >/dev/null
	mkdir -p $(FrontBuildDir)/front
	cp -rf $(EmsFEVue3Dir)/* $(FrontBuildDir)/front >/dev/null
	chmod 755 $(BuildOMCBinDir)/*
#	chmod 755 $(BinDir2)/*
	cp -rf $(BuildDir)/* $(RpmBuildDir)/BUILD/
	#cp -rf $(BuildDir)/nginx $(RpmBuildDir)/BUILD/etc/
	#cp -rf $(BuildDir)/systemd $(RpmBuildDir)/BUILD/lib/
	cd $(RpmBuildDir)
	rpmbuild -bb -D "_topdir $(RpmBuildDir)" $(RpmBuildDir)/SPECS/omc.spec
