Tenho o makefile abaixo.
Por que a regra para o data/vix.csv
destino sempre é executada quando eu executo make
?
Em uma resposta recente no SO , alguém me mostrou como atualizar last_updated.txt
em intervalos de 24 horas, mesmo que eu estivesse executando com make
frequência. Como resultado, @echo "\n\n##### updating last_updated.txt#####\n\n"
raramente imprime quando executo arquivos make
.
Tanto quanto posso ver, essa é a única coisa que atualiza last_updated.txt
. Mas há algo mais modificando esse arquivo? Algo mais parece atualizá-lo porque é a única dependência da primeira regra e @echo "\n\n######## downloading fresh data and updating vix.csv ##########\n\n"
está sempre imprimindo. Isso não é ótimo porque essa é a parte do makefile que chama uma web api.
TS24 := .timestamp24
DUMMY := $(shell touch -d 'yesterday' "$(TS24)")
# update data if it has been 24 hours
data/vix.csv: last_updated.txt
@echo "\n\n######## downloading fresh data and updating vix.csv ##########\n\n"
Rscript update_csv.R
# signal that it's been >24 hours since data download
last_updated.txt: $(TS24)
@echo "\n\n##### updating last_updated.txt#####\n\n"
touch "$@"
.PHONY: run
run:
@echo "\n\n####### running shiny app ###########\n\n"
R --quiet -e "shiny::runApp(launch.browser=TRUE)"
## remove all target, output and extraneous files
.PHONY: clean
clean:
rm -f *~ *.Rout *.RData *.docx *.pdf *.html *-syntax.R *.RData
Execute
ls -l data/vix.csv
para ver o timestamp real dedata/vix.csv
.Isso reflete a última vez que você executou o make e viu a
downloading fresh data and updating vix.csv
mensagem?Ou reflete o timestamp do material de origem, de onde quer
Rscript update_csv.R
que seja?Ou ele realmente é atualizado?