whichR = $(shell if [ -e /usr/bin/Rnewest ]; then echo "Rnewest"; else echo "R"; fi;)

myRlib :=  $(shell if [ -f ~/.Renviron ]; then . ~/.Renviron; R_LIBS=.:$$R_LIBS; else R_LIBS=.; fi; echo $$R_LIBS)
useR = R_LIBS=$(myRlib) $(whichR) --slave --no-environ

BD = run
RD = res
SD = src
CD = test
DD = data
CF = conf
LD = log
BASE = baserun
desfile = $(shell if [ -f $(BD)/curver ]; then tail -1 $(BD)/curver; fi; )

.PHONY = fit plot retro

$(BD)/curver: $(CF)/locked.ver 
	echo "x<-read.table('conf/locked.ver', col.names=c('pkg','sha'));\
	      if(nrow(x)>0){\
	        for(i in 1:nrow(x))devtools::install_github(x[i,1], ref=x[i,2]);\
	      };\
	      pd<-packageDescription('spict');\
	      cat('Version:', pd[['Version']], '\n', file='$(BD)/curver');\
	      cat('RemoteSha:', substr(pd[['RemoteSha']],1,12), '\n', file='$(BD)/curver', append=TRUE);\
	      cat(attr(packageDescription('spict'), 'file'), '\n', file='$(BD)/curver', append=TRUE)" | $(useR)


fit: $(BD)/fit.RData

$(BD)/fit.RData: $(SD)/spict.R $(DD)/data.txt
	echo 'source("src/spict.R");' | $(useR) 1> $(LD)/model.out 2> $(LD)/model.err
	mv $(LD)/model.err $(LD)/model.log

plot: $(RD)/footprint

$(RD)/footprint: $(SD)/plotscript.R $(BD)/fit.RData $(BD)/curver $(desfile) 
	echo 'source("src/plotscript.R");' | $(useR) 1> $(LD)/plot.out 2> $(LD)/plot.err 
	mv $(LD)/plot.err $(LD)/plot.log

retro: $(BD)/retro.RData

forecast: $(BD)/forecast.RData

$(BD)/retro.RData: $(BD)/fit.RData $(SD)/retro.R
	echo 'source("src/retro.R");' | $(useR) 1> $(LD)/retro.out 2> $(LD)/retro.err
	echo 'source("src/plotscript.R");' | $(useR) 1> $(LD)/plot.out 2> $(LD)/plot.err 
	mv $(LD)/plot.err $(LD)/plot.log

$(BD)/forecast.RData: $(BD)/fit.RData $(SD)/forecast.R
	echo 'source("src/forecast.R");' | $(useR) 1> $(LD)/retro.out 2> $(LD)/forecast.err
	echo 'source("src/plotscript.R");' | $(useR) 1> $(LD)/plot.out 2> $(LD)/plot.err 
	mv $(LD)/plot.err $(LD)/plot.log

button: 
	@echo Add retro runs\; retro\; Add retrospective runs based on the current model 
	@echo Add management scenarios\; forecast\; Add management scenarios based on the current model 

getR: 
	@echo $(useR)

getPackageVersion: $(BD)/curver
	@head -2 $(BD)/curver | sed s/Version://g | sed s/RemoteSha://g

doclink: 
	@echo Vignette\; https://github.com/mawp/spict/blob/master/spict/vignettes/vignette.pdf
