NODE6_PATH=/opt/nodejs/6/bin
NODE6=$(NODE6_PATH)/node

ifdef target
COMMANDER_BRANCH_TARGET=-target $(target)
endif

ifdef pr
COMMANDER_BRANCH_PR_FLAG=--pr
endif

.PHONY: help
help: ## Выводит справку по командам makefile
	@cat $(MAKEFILE_LIST) | grep -e "^[a-zA-Z_\-]*: *.*## *" | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'

.PHONY: test
test: ## Запускает тесты на все блоки
	node node_modules/direct-dev/lib/walker-cli -p test-bundles -b $(block)
	node_modules/.bin/enb make
	node node_modules/direct-dev/lib/walker-cli -p test-report-console -b $(block)
	node node_modules/direct-dev/lib/walker-cli -p coverage-report-console -b $(block)

.PHONY: teamcity-test
teamcity-test: ## Запускает тесты на все блоки (выводит результаты в консоль в формате teamcity)
	node node_modules/direct-dev/lib/walker-cli -p test-bundles -b $(block)
	node_modules/.bin/enb make
	node node_modules/direct-dev/lib/walker-cli -p test-report-teamcity -b $(block)
	node node_modules/direct-dev/lib/walker-cli -p coverage-report-teamcity -b $(block)

.PHONY: coverage
coverage: ## Формирует HTML-отчет о покрытии тестами
	node node_modules/direct-dev/lib/walker-cli -p test-bundles -b $(block)
	node_modules/.bin/enb make
	node node_modules/direct-dev/lib/walker-cli -p coverage-report-html -b $(block)

.PHONY: dev-server-sandbox
dev-server-sandbox: ## Запускает песочницу для разработки блока
	node node_modules/direct-dev/lib/walker-cli -p sandbox-bundles -b $(block)
	node node_modules/direct-dev-server -b $(block)

.PHONY: dev-server-tests
dev-server-tests: ## Запускает песочницу для разработки блока
	node node_modules/direct-dev/lib/walker-cli -p sandbox-bundles -b $(block)
	node node_modules/direct-dev-server -b $(block) -t ?.test.html

.PHONY: fixcss
fixcss: ## Исправление css файлов в соответствии с принятым стилем
	node_modules/.bin/csscomb source.blocks

.PHONY: fixsvg
fixsvg: ## Оптимизация svg
	find source.blocks -name '*.svg'|xargs -n1 wc -l|awk '{if($$1 > 1) print ($$2)}'|xargs -n1 node_modules/svgo/bin/svgo

.PHONY: deps
deps: ## Выкачивание зависимостей
	rm -rf node_modules
	PATH="$(NODE6_PATH)/:$$PATH" zlo5

.PHONY: deps-teamcity
deps-teamcity: ## Выкачивание зависимостей для CI
	rm -rf node_modules
	PATH="$(NODE6_PATH)/:$$PATH" npm i

.PHONY: deps-local
deps-local: ## Собирает зависимости при помощи локального zlo
	rm -rf node_modules
	PATH="$(NODE6_PATH)/:$$PATH" node zlo5/lib/cli.js --verbose

.PHONY: zlo-local
zlo-local: ## Устанавливает zlo из git-репозитория в локальной папке на бете
	rm -rf zlo5
	mkdir zlo5
	git clone https://github.com/heliarian/zlo.git zlo5
	(cd zlo5 && npm i)

.PHONY: kill-deps
kill-deps: ## Удаление зависимостей для конкретной сборки
	rm -rf node_modules
	zlo5 --kill

.PHONY: kill-all-deps
kill-all-deps: ## Удаление всех закешированных зависимостей
	rm -rf node_modules
	zlo5 --kill-all
