include include.mk
include django_common.mk

all: media i18n

package: media i18n
	dpkg-buildpackage

media:
	cd $(MEDIA_ROOT); make all

media_%:
	cd $(MEDIA_ROOT); make $*

ycssjs: media_ycssjs

lego: media_lego media_rebuild

RSYNC_FLAGS := -a -v --exclude='*.local' --exclude='build/' --exclude='.idea/' --exclude='htmlcov/' \
               --exclude='*.pyc' --exclude='.git' --exclude='*~' --exclude='.tox/' --exclude='.env/'

to-dev:
	rsync $(RSYNC_FLAGS) ~/dev/yandex/ml  ml-dev.cmail.yandex.net:~


ROOTDIR := $(CURDIR)
PROJECTDIR := $(CURDIR)/src/maillists
VENV := venv

virtualenv:
	/usr/bin/virtualenv --system-site-packages $(VENV)
	$(VENV)/bin/pip install -i https://pypi.yandex-team.ru/simple/ --upgrade 'pip<10.0' setuptools
	# Костыль для pip 9.0.1 он падает на юникодных комментах
	sed 's/#.*//g' requirements/base.txt > requirements/base_temp.txt
	$(VENV)/bin/pip install -i https://pypi.yandex-team.ru/simple/ --no-index --find-links=/tmp/pipcache -r requirements/base_temp.txt
	/usr/bin/virtualenv --relocatable $(VENV)

virtualenv-build: virtualenv media_ycssjs
	cp $(PROJECTDIR)/manage.py $(VENV)/bin/manage.py
	VIRTUAL_ENV="$(CURDIR)/$(VENV)" PATH="$(CURDIR)/$(VENV)/bin:$$PATH" make i18n
	$(CURDIR)/$(VENV)/bin/python setup.py build install

virtualenv-install:
	mkdir -p $$DEST_DIR
	mv $(VENV)/* $$DEST_DIR
	rm -rf $(VENV)


.PHONY: all package clean lego ycssjs prebuild

to-dev2:
	rsync $(RSYNC_FLAGS) .  ml-dev.cmail.yandex.net:~/ml

BASE_VERSION := $(shell cat docker/base_image/__version__)

dc_base := docker-compose -f docker-compose-base.yml

update-base-image: clean-base pull-base build-base tag-base

push-base-image: push-base

clean-base:
	docker images "ml-base"  --format "{{.Repository}}:{{.Tag}}"| xargs -r docker rmi -f
	docker images "registry.yandex.net/maillists/base"  --format "{{.Repository}}:{{.Tag}}"| xargs -r docker rmi -f

pull-base:
	$(dc_base) pull base

build-base:
	$(dc_base) build --no-cache --force-rm

tag-base:
	docker tag ml-base:local registry.yandex.net/maillists/base:$(BASE_VERSION)
	docker tag ml-base:local registry.yandex.net/maillists/base:latest

push-base:
	docker push registry.yandex.net/maillists/base:$(BASE_VERSION)
	docker push registry.yandex.net/maillists/base:latest

dc_local := docker-compose -f docker-compose-localrun.yml

local-up: clean-local build-local dc-local-up

clean-local:
	docker images "maillists-pybase"  --format "{{.Repository}}:{{.Tag}}"| xargs -r docker rmi -f
	docker images "maillists-ui"  --format "{{.Repository}}:{{.Tag}}"| xargs -r docker rmi -f
	docker images "maillists-tasks"  --format "{{.Repository}}:{{.Tag}}"| xargs -r docker rmi -f

build-local:
	$(dc_local) build --no-cache --force-rm

dc-local-up:
	$(dc_local) up

local-run-ui:
	$(dc_local) run --rm maillists-ui $(filter-out $@,$(MAKECMDGOALS))

local-run-tasks:
	$(dc_local) run --rm maillists-tasks $(filter-out $@,$(MAKECMDGOALS))

local-down:
	$(dc_local) down

VERSION := $(shell cat __version__)

docker: docker-clean docker-pull-base docker-build docker-tag

docker-clean:
	docker images "maillists-ui"  --format "{{.Repository}}:{{.Tag}}"| xargs -r docker rmi -f
	docker images "maillists-tasks"  --format "{{.Repository}}:{{.Tag}}"|xargs -r docker rmi -f
	docker images "registry.yandex.net/maillists/ml-ui"  --format "{{.Repository}}:{{.Tag}}"| xargs -r docker rmi -f
	docker images "registry.yandex.net/maillists/ml-tasks"  --format "{{.Repository}}:{{.Tag}}"| xargs -r docker rmi -f
	docker images "registry.yandex.net/maillists/base"  --format "{{.Repository}}:{{.Tag}}"| xargs -r docker rmi -f

docker-pull-base:
	docker pull registry.yandex.net/maillists/base:latest

docker-build:
	docker-compose build --no-cache --force-rm

docker-tag:
	docker tag maillists-ui:local registry.yandex.net/maillists/ml-ui:$(VERSION)
	docker tag maillists-tasks:local registry.yandex.net/maillists/ml-tasks:$(VERSION)

docker-push:
	docker push registry.yandex.net/maillists/ml-ui:$(VERSION)
	docker push registry.yandex.net/maillists/ml-tasks:$(VERSION)