.PHONY: build clean deploy gomodgen jenkins-deploy

PROTOC_VERSION=3.7.0

build: gomodgen
	export GO111MODULE=on
	env GOOS=linux go build -ldflags="-s -w" -o bin/spade cmd/spade/main.go
	env GOOS=linux go build -ldflags="-s -w" -o bin/add_device_token cmd/add_device_token/main.go

clean:
	rm -rf ./bin ./vendor Gopkg.lock
	rm ./protoc.zip || true

deploy: clean build
	sls deploy --verbose

gomodgen:
	chmod u+x gomod.sh
	./gomod.sh

jenkins-deploy: clean build
	$(eval ACCOUNT="$(shell aws sts get-caller-identity --query Account --output text)")
	@echo account is $(ACCOUNT)
	$(eval CREDS='$(shell aws sts assume-role --role-arn=arn:aws:iam::$(ACCOUNT):role/jenkins-deploy-dev --role-session-name=assume-deploy | jq -c .Credentials)')
	@echo creds are $(CREDS)
	$(eval AWS_ACCESS_KEY_ID="$(shell echo $(CREDS) | jq -r '.AccessKeyId')")
	$(eval AWS_SECRET_ACCESS_KEY="$(shell echo $(CREDS) | jq -r '.SecretAccessKey')")
	$(eval AWS_SESSION_TOKEN="$(shell echo $(CREDS) | jq -r '.SessionToken')")
	unset AWS_PROFILE; AWS_SECRET_ACCESS_KEY=$(AWS_SECRET_ACCESS_KEY) AWS_ACCESS_KEY_ID=$(AWS_ACCESS_KEY_ID) AWS_SESSION_TOKEN=$(AWS_SESSION_TOKEN) npm run serverless -- deploy --stage ${STAGE}

proto: clean
	go get -u github.com/ckaznocha/protoc-gen-lint
	protoc --lint_out=. --proto_path=./pkg/client --twirp_out=paths=source_relative:./pkg/client --go_out=paths=source_relative:./pkg/client vision.proto

download-protoc: clean
	wget "https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOC_VERSION}/protoc-${PROTOC_VERSION}-linux-x86_64.zip" -O protoc.zip
	sha1sum -c protoc.zip.sha1 -s

install-protoc: download-protoc
	mkdir -p /lib/protoc
	cp protoc.zip /lib/protoc
	unzip /lib/protoc/protoc.zip
	ln -s /lib/protoc/bin/protoc /bin/protoc

gen-protoc-sha1: download-protoc
	sha1sum ./protoc.zip > ./protoc.zip.sha1
