PYTHON=python
DEFAULT_PREFIX_MAP="https://raw.githubusercontent.com/biopragmatics/bioregistry/main/exports/contexts/obo_synonyms.context.jsonld"
SSSOM_PY="https://raw.githubusercontent.com/mapping-commons/sssom/master/sssom/sssom.py"
SSSOM_YAML="https://raw.githubusercontent.com/mapping-commons/sssom/master/sssom/model/schema/sssom.yaml"
SSSOM_JSON_SCHEMA="https://raw.githubusercontent.com/mapping-commons/sssom/master/sssom/jsonschema/sssom.schema.json"
SSSOM_JSONLD_CONTEXT="https://raw.githubusercontent.com/mapping-commons/sssom/master/sssom/jsonld/sssom.context.jsonld"

all: test

EXTS = _datamodel.py .schema.json .context.jsonld .external.context.jsonld .yaml

all_schema: $(patsubst %,schema/sssom%, $(EXTS))

.PHONY: .FORCE

schema/%_datamodel.py: .FORCE
	wget $(SSSOM_PY) -O $@
schema/cliquesummary.py: schema/cliquesummary.yaml
	gen-py-classes $< > $@
schema/%.schema.json: .FORCE
	wget $(SSSOM_JSON_SCHEMA) -O $@
schema/sssom.external.context.jsonld:
	wget $(DEFAULT_PREFIX_MAP) -O $@
schema/%.context.jsonld: .FORCE
	wget $(SSSOM_JSONLD_CONTEXT) -O $@
schema/%.yaml sssom/%.yaml: .FORCE
	wget $(SSSOM_YAML) -O $@

test:
	pip install --upgrade pip
	pip install --upgrade tox
	tox
	sh tests/tests.sh

sssom/external_context.py: schema/sssom.external.context.jsonld
	echo "\"\"\"This module contains an autogenerated copy of the external SSSOM context.\"\"\"" > $@
	echo "" >> $@
	echo "# This is autogenerated and super hacky." >> $@
	echo "sssom_external_context = \"\"\""  >> $@
	cat $< >> $@
	echo "\"\"\""  >> $@
	black $@

sssom/internal_context.py: schema/sssom.context.jsonld
	echo "\"\"\"This module contains an autogenerated copy of the internal SSSOM context.\"\"\"" > $@
	echo "" >> $@
	echo "sssom_context = \"\"\""  >> $@
	cat $< >> $@
	echo "\"\"\""  >> $@

deploy-dm: sssom/external_context.py sssom/internal_context.py
	cp schema/sssom_datamodel.py sssom/
	cp schema/sssom.context.jsonld sssom/
	cp schema/sssom.external.context.jsonld sssom/
	

install:
	pip install .[test,docs]

pypi: test
	echo "Uploading to pypi. Make sure you have twine installed.."
	python setup.py sdist
	twine upload dist/*

.PHONY: lint
lint:
	pip install tox
	tox -e lint

.PHONY: mypy
mypy:
	pip install tox
	tox -e mypy

# .PHONY: sphinx
# sphinx:
# 	cd sphinx &&\
# 	make clean html

# .PHONY: deploy-docs
# deploy-docs:
# 	cp -r sphinx/_build/html/* docs/
