# defaults, override with caution
IMAGE_NAME = carsharing/ya-drive-admin;
DOCKER_PATH = registry.yandex.net/carsharing/ya-drive-admin
VERSION = `node -e "console.log(require('./package.json').version)"`
TICKET = `drivefront-000`
DEPLOY_TARGET=production # any value that isn't "production" will be interpreted as "branch"
REVISION=patch
SHELL := /bin/bash
CONFIG = RELEASER_PROJECT_CONFIG=".release.stand.hjson"

semver:
	npm --no-git-tag-version version $(REVISION) -f

# | tee <file>.log means that stdout and stderr of the scripts should be copied to <file>.log
docker-build:
	 ./build_release.sh -d $(DEPLOY_TARGET) && \
		./build_docker.sh -t $(TAG) -d $(DEPLOY_TARGET) -p $(PREVIOUS_RELEASE) | tee ./build_docker.log

docker-publish:
	docker push $(DOCKER_PATH):$(VERSION)

restore-files-mdate:
	source ~/.bash_profile && source ~/.bashrc && git-restore-mtime

# Usage: make publish (REVISION=<patch | minor | major etc>)
# To publish to (prestable).carsharing.yandex-team.ru
# LATEST_RELEASE=<last modified folder in releases> , PREVIOUS_RELEASE=<second to last modified folder in releases>
# Accepts custom PREVIOUS_RELEASE
# Pass UPLOAD_TESTING_SOURCE_MAPS=true to upload source maps for testing.carsharing.yandex-team.ru to ErrorBooster
# Pass UPLOAD_PRODUCTION_SOURCE_MAPS=true (default=false) to upload source maps for (prestable).carsharing.yandex-team.ru to ErrorBooster
# Don't use on branches!!!
publish:
	 make REVISION=$(REVISION) semver && \
 		make DEPLOY_TARGET=production UPLOAD_PRODUCTION_SOURCE_MAPS=true PREVIOUS_RELEASE=$(PREVIOUS_RELEASE) TAG=$(DOCKER_PATH):$(VERSION) docker-build && \
    	make VERSION=$(VERSION) docker-publish

# Usage: make build_docker_image (REVISION=<patch | minor | major etc>)
# To build a docker image without publishing it to registry
# LATEST_RELEASE=<last modified folder in releases> , PREVIOUS_RELEASE=<second to last modified folder in releases>
# Accepts custom PREVIOUS_RELEASE
# Pass UPLOAD_TESTING_SOURCE_MAPS=true to upload source maps for testing.carsharing.yandex-team.ru to ErrorBooster
# Pass UPLOAD_PRODUCTION_SOURCE_MAPS=true to upload source maps for (prestable).carsharing.yandex-team.ru to ErrorBooster
build_docker_image:
	make restore-files-mdate && make REVISION=$(REVISION) semver && \
 		make DEPLOY_TARGET=production PREVIOUS_RELEASE=$(PREVIOUS_RELEASE) TAG=$(DOCKER_PATH):$(VERSION) docker-build

# Usage: make publish_branch (TICKET=<name>)
# To publish current branch to stand
# LATEST_RELEASE=dist, PREVIOUS_RELEASE=<last master version>
# Accepts custom PREVIOUS_RELEASE
# Sometimes name of git branch can be unsuitable for a docker tag  In this case, set BRANCH manually
# Pass UPLOAD_TESTING_SOURCE_MAPS=true to upload source maps for <ticket>.stand.carsharing.yandex-team.ru to ErrorBooster
publish_branch: check_name
	make REVISION=prerelease semver && \
		make DEPLOY_TARGET=branch docker-build PREVIOUS_RELEASE=$(PREVIOUS_RELEASE) TAG=$(VERSION)

check_name:
	@source ~/.bash_profile && source ~/.bashrc && test $(TICKET) || (echo 'Usage: make COMMAND TICKET=<ticket>'; exit 1)
