# Copyright 2010 K. Richard Pixley.
# See LICENSE for details.
#
# Time-stamp: <24-Feb-2010 09:22:41 PST by rich@noir.com>

default: all

venv := sprained-dev
pythonbin := ${venv}/bin

python := ${pythonbin}/python
activate := . ${pythonbin}/activate
pydoctor := ${venv}/bin/pydoctor
epydoc := ${venv}/bin/epydoc

metaserializer_egg := ${venv}/lib/python2.6/site-packages/metaserializer-0.004-py2.6.egg
nevow_egg := ${venv}/lib/python2.6/site-packages/Nevow-0.10.0-py2.6.egg
nose_egg := ${venv}/lib/python2.6/site-packages/nose-0.11.1-py2.6.egg
pyyaml_egg := ${venv}/lib/python2.6/site-packages/PyYAML-3.09-py2.6-linux-x86_64.egg
spread_egg := ${venv}/lib/python2.6/site-packages/SpreadModule-1.5-py2.6-linux-x86_64.egg
twisted_egg := ${venv}/lib/python2.6/site-packages/Twisted-9.0.0-py2.6-linux-x86_64.egg

all: ${spread_egg} ${nose_egg} ${pydoctor} ${pyyaml_egg} ${metaserializer_egg}

metaserializer: ${metaserializer_egg}
${metaserializer_egg}: .stamp-apt
	${activate} && easy_install -U metaserializer

yaml: ${pyyaml_egg}
${pyyaml_egg}: .stamp-apt
	${activate} && easy_install -U pyyaml

pydoctor: ${pydoctor}
${pydoctor}: .stamp-apt ${nevow_egg} ${epydoc}
	bzr get lp:pydoctor pydoctor
	${activate} && cd pydoctor && python setup.py install

epydoc: ${epydoc}
${epydoc}: ${python}
	${activate} && easy_install -U epydoc

nevow: ${nevow_egg}
${nevow_egg}: ${twisted_egg}
	${activate} && easy_install -U nevow

twisted: ${twisted_egg}
${twisted_egg}: ${python}
	${activate} && easy_install -U twisted

spread: ${spread_egg}
${spread_egg}: ${python}
	${activate} && easy_install -U SpreadModule

nose: ${nose_egg}
${nose_egg}: ${python}
	${activate} && easy_install -U nose

.stamp-lucid: .stamp-apt
	sudo apt-get install --yes python-twisted python-nose
	touch $@-new && mv $@-new $@

.PHONY: ve
ve: ${python}
${python}: .stamp-virtualenv
	virtualenv --no-site-packages sprained-dev

.stamp-virtualenv: .stamp-apt
	sudo easy_install -U virtualenv
	touch $@-new && mv $@-new $@

# firefox is only needed for reading the doc
DEBIANS := \
	apt-file \
	build-essential \
	bzr \
	debhelper \
	firefox \
	libapache2-mod-wsgi \
	libspread1 \
	libspread1-dev \
	python-dev \
	python-epydoc \
	python-nevow \
	python-setuptools \
	python-twisted \
	python-virtualenv \
	python-yaml \
	yaml-mode \
	libyaml-0-2 \
	libyaml-dev \
	spread \

.stamp-apt:
	sudo apt-get install --yes ${DEBIANS}
	touch $@-new && mv $@-new $@

clean:
	rm -rf ${venv} .stamp-virtualenv .stamp-apt pydoctor build \
		dist sprained.egg-info .stamp-lucid *.pyc apidocs

check:; nosetests -v

doc: ${pydoctor}
	${activate} && pydoctor --add-module=sprained.py \
		--add-module=test_sprained.py \
		--add-module=test_spread.py \
		&& firefox apidocs/index.html

sdist: ${python}
	${activate} && python setup.py sdist
