RUN_TYPE ?= linear_sequence
MAIN_MODEL ?=
MAIN_MODEL_ARG = $(if $(strip $(MAIN_MODEL)),--main-model $(MAIN_MODEL),)
LOCAL_DATA_DIR := $(CURDIR)/local_danare_data
UPDATED_MODEL_DATA ?= $(CURDIR)/outputs/data/irf_data_bank_capital_updated.csv
PYTHON ?= python

.PHONY: run check local-data plots setup model model-fast model-refit model-data-update \
	verify paper-assets steady deterministic linear_sequence fit_deterministic \
	fit_linear_sequence fit_time_series irfs

run:
	$(PYTHON) src/main.py --run-type $(RUN_TYPE) $(MAIN_MODEL_ARG)

steady deterministic linear_sequence fit_deterministic fit_linear_sequence fit_time_series irfs:
	$(PYTHON) src/main.py --run-type $@ $(MAIN_MODEL_ARG)

plots:
	$(PYTHON) src/plot_irfs.py
	$(PYTHON) src/plot_deterministic.py --paper

setup:
	conda env create -f environment.yml

model: model-fast

model-fast:
	$(PYTHON) -m scripts.run_model --mode fast

model-refit:
	$(PYTHON) -m scripts.run_model --mode refit

model-data-update:
	$(PYTHON) -m scripts.update_model_data --output "$(UPDATED_MODEL_DATA)"

verify:
	$(PYTHON) -m scripts.verify_outputs

paper-assets:
	$(PYTHON) -m scripts.collect_paper_assets

check:
	$(PYTHON) -m py_compile src/*.py scripts/*.py scripts/tests/*.py
	$(PYTHON) -m unittest scripts.tests.test_update_model_data scripts.tests.test_collect_paper_assets scripts.tests.test_plot_variables scripts.tests.test_verify_outputs

local-data:
	mkdir -p $(LOCAL_DATA_DIR)
