AWS_PROFILE ?= gdb-infra-dev
IMAGE_ID ?= ''
INSTANCE_ID ?= ''

AWS_PROVIDER_VERSION         ?= 5.5.0
GOOGLE_PROVIDER_VERSION      ?= 4.70.0
GOOGLE_BETA_PROVIDER_VERSION ?= 4.70.0
LOCAL_PROVIDER_VERSION   ?= 2.4.0
RANDOM_PROVIDER_VERSION  ?= 3.5.1
ARCHIVE_PROVIDER_VERSION ?= 2.4.0
DNS_PROVIDER_VERSION  ?= 3.3.2
NULL_PROVIDER_VERSION ?= 3.3.1
TIME_PROVIDER_VERSION ?= 0.9.1

## :
##   help : this message
.PHONY: help
help: Makefile
	@echo "Run command:\n  make <target>\n"
	@grep -E -h '^## .*' $(MAKEFILE_LIST) | sed -n 's/^##//p'  | column -t -s ':' |  sed -e 's/^/ /'

## :
## Packer build commands

##   build/common : Run packer build for common agent
build/common: TEMPLATE = linux-agents.json

##   build/terraform : Run packer build for terraform agent
build/terraform: TEMPLATE = linux-agents-for-terraform.json

.PHONY: build/%
build/%:
	AWS_PROFILE=$(AWS_PROFILE) packer build \
		-var 'aws_provider_version=$(AWS_PROVIDER_VERSION)' \
		-var 'google_provider_version=$(GOOGLE_PROVIDER_VERSION)' \
		-var 'google_beta_provider_version=$(GOOGLE_BETA_PROVIDER_VERSION)' \
		-var 'local_provider_version=$(LOCAL_PROVIDER_VERSION)' \
		-var 'random_provider_version=$(RANDOM_PROVIDER_VERSION)' \
		-var 'archive_provider_version=$(ARCHIVE_PROVIDER_VERSION)' \
		-var 'dns_provider_version=$(DNS_PROVIDER_VERSION)' \
		-var 'null_provider_version=$(NULL_PROVIDER_VERSION)' \
		-var 'time_provider_version=$(TIME_PROVIDER_VERSION)' \
		$(TEMPLATE)

## :
## Packer validate commands

##   validate/common : Run packer validate for common agent template
validate/common: TEMPLATE = linux-agents.json

##   validate/terraform : Run packer validate for terraform agent template
validate/terraform: TEMPLATE = linux-agents-for-terraform.json

.PHONY: validate/%
validate/%:
	packer validate $(TEMPLATE)

.PHONY: ec2/run
ec2/run:
	AWS_PROFILE=$(AWS_PROFILE) aws ec2 run-instances \
		--image-id $(IMAGE_ID) \
		--count 1 \
		--instance-type t3.micro \
		--key-name dev-infra-default \
		--security-group-ids sg-076308b4ea635bb92 \
		--subnet-id subnet-0d6dee5e53c113470 | jq -r '.Instances[].InstanceId'

.PHONY: ec2/connect
ec2/connect:
	AWS_PROFILE=$(AWS_PROFILE) aws ec2 describe-instances \
		--instance-ids $(INSTANCE_ID) | jq -r '.Reservations[].Instances[].PublicIpAddress' | \
		xargs -I {} ssh -tt -i ~/.ssh/dev-infra-default.pem ec2-user@{}

.PHONY: ec2/terminate
ec2/terminate:
	AWS_PROFILE=$(AWS_PROFILE) aws ec2 terminate-instances \
		--instance-ids $(INSTANCE_ID)
