#!/usr/bin/make -f

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

export DH_GOLANG_EXCLUDES := \
	scripts/fork_go_templates \
	tpl/tplimpl/embedded/generate

export DH_GOLANG_INSTALL_EXTRA := \
	livereload/livereload.js \
	tpl/tplimpl/embedded/templates

# Prevent TestImageResize8BitPNG from failing due to pkgbinarymangler
# recompressing our test PNG image on Ubuntu
export NO_PNG_PKG_MANGLE := 1

# Prepare -ldflags arguments for Hugo version information

include /etc/os-release

PACKAGE := $(shell sed -n "s/^XS-Go-Import-Path: \(.*\)/\1/p" debian/control)

DATE_FMT = %Y-%m-%dT%H:%M:%SZ
ifdef SOURCE_DATE_EPOCH
  BUILD_DATE ?= $(shell date -u -d "@$(SOURCE_DATE_EPOCH)" "+$(DATE_FMT)" 2>/dev/null || date -u -r "$(SOURCE_DATE_EPOCH)" "+$(DATE_FMT)" 2>/dev/null || date -u "+$(DATE_FMT)")
else
  BUILD_DATE ?= $(shell date -u "+$(DATE_FMT)")
endif

VENDOR_INFO := $(ID):$(shell dpkg-parsechangelog --show-field Version)

LDFLAGS := -ldflags \
	'-X "$(PACKAGE)/common/hugo.buildDate=$(BUILD_DATE)" \
	 -X "$(PACKAGE)/common/hugo.vendorInfo=$(VENDOR_INFO)"'

HUGO := _build/bin/hugo

# The "dev" tag tells golibsass and gowebp not to build libsass and libwebp
# from source but to link with pre-installed libraries instead.
# See https://github.com/bep/golibsass/blob/master/README.md
# and https://github.com/bep/gowebp/blob/master/README.md
TAGS := -tags 'dev extended'

ifeq ($(DEB_BUILD_ARCH),ppc64)
  # Use golang-go on ppc64 as gccgo has failed to build hugo since March 2018.
  # Better to exceed Debian's minimum ISA than to have no hugo at all.
  go_ver := $(shell sed -E -n 's/\s+golang-([0-9.]+)-go \[ppc64\].*/\1/p' debian/control)
  export PATH := /usr/lib/go-$(go_ver)/bin:$(PATH)
  # Caveat: external linking not supported for linux/ppc64, removing tags.
  # See https://github.com/golang/go/issues/8912
  undefine TAGS
endif

%:
	dh $@ --builddirectory=_build

execute_before_dh_auto_configure:
	# github.com/gohugoio/testmodBuilder is for testing only
	# and will not be packaged separately for Debian
	mkdir -p _build/src/github.com/gohugoio
	ln -s $(CURDIR)/debian/go/src/github.com/gohugoio/testmodBuilder \
	    _build/src/github.com/gohugoio/
	
	# github.com/gohugoio/go-i18n/v2 (Fix multiple unknown language codes)
	# See https://github.com/gohugoio/hugo/issues/7838
	ln -s $(CURDIR)/debian/go/src/github.com/gohugoio/go-i18n \
	    _build/src/github.com/gohugoio/
	
	# github.com/gohugoio/locales
	cp -a /usr/share/gocode/src/github.com/go-playground/locales \
	    _build/src/github.com/gohugoio/
	cd _build/src/github.com/gohugoio/locales && \
	    sed -i 's/go-playground/gohugoio/' *.go */*.go
	
	# github.com/gohugoio/localescompressed
	ln -s $(CURDIR)/debian/go/src/github.com/gohugoio/localescompressed \
	    _build/src/github.com/gohugoio/

override_dh_auto_build:
	@command -V go
	@go version
	dh_auto_build -- $(LDFLAGS) $(TAGS)
	$(HUGO) version
	mkdir -p debian/completion
	cd debian/completion && mkdir -p bash fish zsh
	$(HUGO) completion bash > debian/completion/bash/hugo
	$(HUGO) completion fish > debian/completion/fish/hugo.fish
	$(HUGO) completion zsh > debian/completion/zsh/_hugo
	$(HUGO) gen man --dir=debian/man
	# TODO: Add "hugo-docs" package in the future?
	#$(HUGO) -s docs -d public/html --uglyURLs

# Disable network access during testing by using -short flag
override_dh_auto_test:
	@command -V go
	@go version
	CI=true dh_auto_test -- -short -timeout 120m

override_dh_auto_install:
	dh_auto_install -- --no-source
