#!/usr/bin/make -f

# Disable unneeded stuff that needs dependencies not currently in debian
export DH_GOLANG_EXCLUDES := \
	azure-sdk-for-go/eng/tools \
	azure-sdk-for-go/sdk/messaging/azservicebus/internal \
	azure-sdk-for-go/sdk/messaging/azeventhubs/internal \
	azure-sdk-for-go/sdk/samples

# Disable tests that assume access to internet or run from a git checkout
export DH_GOLANG_TEST_EXCLUDES := $(DH_GOLANG_EXCLUDES) \
	preview \
	azure-sdk-for-go/profiles \
	azure-sdk-for-go/sdk/ai \
	azure-sdk-for-go/sdk/azidentity \
	azure-sdk-for-go/sdk/cognitiveservices \
	azure-sdk-for-go/sdk/containers \
	azure-sdk-for-go/sdk/data \
	azure-sdk-for-go/sdk/internal \
	azure-sdk-for-go/sdk/messaging \
	azure-sdk-for-go/sdk/monitor \
	azure-sdk-for-go/sdk/resourcemanager \
	azure-sdk-for-go/sdk/security \
	azure-sdk-for-go/sdk/storage \
	azure-sdk-for-go/sdk/tracing \

# this is a huge hack and was better implemented in dh-golang. The issue is
# that this package is a collection of individual golang modules,
# cf. https://learn.microsoft.com/en-us/azure/developer/go/overview
# Upstream distinguises between "Client Libraries" and "Management Libraries"
# at different levels of maturity:
# https://azure.github.io/azure-sdk/releases/latest/mgmt/go.html
# The upstream git repository that this Debian package is based on packages all
# of them together.  Unfortunately, dh-golang doesn't deal with go modules well.
# as such, go.mod is mostly ignored, and the fixups below account for the version
# bumps accordingly to make the imports as documentation in the SDK work.
GOMOD_VERSION_FIXUPS := \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/apimanagement/armapimanagement/v2 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/appconfiguration/armappconfiguration/v2 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/appcontainers/armappcontainers/v2 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/appplatform/armappplatform/v2 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/appservice/armappservice/v2 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/authorization/armauthorization/v3 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/azurestackhci/armazurestackhci/v2 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/baremetalinfrastructure/armbaremetalinfrastructure/v2 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/batch/armbatch/v2 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/billingbenefits/armbillingbenefits/v2 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cdn/armcdn/v2 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/communication/armcommunication/v2 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerinstance/armcontainerinstance/v2 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice/v4 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cosmos/armcosmos/v3 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/costmanagement/armcostmanagement/v2 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/databox/armdatabox/v2 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/datafactory/armdatafactory/v4 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/dataprotection/armdataprotection/v2 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/desktopvirtualization/armdesktopvirtualization/v2 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/dynatrace/armdynatrace/v2 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/eventgrid/armeventgrid/v2 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/hybridcompute/armhybridcompute/v2 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/hybridnetwork/armhybridnetwork/v2 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/kubernetesconfiguration/armkubernetesconfiguration/v2 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/kusto/armkusto/v2 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/machinelearning/armmachinelearning/v3 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/mediaservices/armmediaservices/v3 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/mobilenetwork/armmobilenetwork/v3 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/mysql/armmysqlflexibleservers/v2 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/netapp/armnetapp/v5 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/networkfunction/armnetworkfunction/v2 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/nginx/armnginx/v3 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/orbital/armorbital/v2 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/postgresql/armpostgresqlflexibleservers/v4 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/powerbiprivatelinks/armpowerbiprivatelinks/v2 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/recoveryservices/armrecoveryservicesbackup/v3 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/recoveryservices/armrecoveryservicessiterecovery/v2 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/redis/armredis/v3 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/reservations/armreservations/v3 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armdeploymentscripts/v2 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/selfhelp/armselfhelp/v2 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/servicefabric/armservicefabric/v2 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/solutions/armmanagedapplications/v2 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/sql/armsql/v2 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storagecache/armstoragecache/v3 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storagemover/armstoragemover/v2 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/support/armsupport/v2 \
	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/virtualmachineimagebuilder/armvirtualmachineimagebuilder/v2


%:
	dh $@ --buildsystem=golang --builddirectory=_build

override_dh_auto_test:
	DH_GOLANG_EXCLUDES="$(DH_GOLANG_TEST_EXCLUDES)" \
	dh_auto_test --builddirectory=_build

execute_before_dh_auto_build:
	cd _build/src && for d in $(GOMOD_VERSION_FIXUPS); do ln -sr `dirname $$d` $$d ; done

execute_after_dh_auto_install:
	rm -rf _build/go-build _build/pkg

execute_after_dh_install:
	# Fix package-contains-vcs-control-file lintian warning
	-find $(CURDIR)/debian/* -type f -name .gitignore -delete

	cd debian/golang-github-azure-azure-sdk-for-go-dev/usr/share/gocode/src && \
	  for d in $(GOMOD_VERSION_FIXUPS); do ln -sr `dirname $$d` $$d ; done
