У меня есть файл данных data.json
, скрипт, который будет обрабатывать файл данных render
, и 3 файла шаблона accounts.template
, locals.template
и header.template
.
Цели называются accounts
и locals
и относятся к расширению соответствующего шаблона с данными, хранящимися в data.json
. Ничего особенно сложного.
Цели и data.json
находятся в каталоге root для проекта. Сценарий render
находится в ./scripts
. Шаблоны находятся в ./scripts/templates
.
В настоящее время мой Makefile
выглядит следующим образом ...
render: data.json scripts/render locals accounts
@echo Completed
locals: data.json scripts/render scripts/templates/locals.template scripts/templates/header.template
@echo "Building locals"
@echo "------------------"
@php scripts/render locals
@echo ""
accounts: data.json scripts/render scripts/templates/accounts.template scripts/templates/header.template
@echo "Building accounts"
@echo "--------------------"
@php scripts/render accounts
@echo ""
Это на самом деле не расширяется. У меня есть еще около 20 различных шаблонов для генерации из файла data.json
(данные МОГУТ разбиваться на 1 json файл на шаблон, если требуется).
Есть ли более интеллектуальные и в идеале способ автоматического расширения для достижения этой цели?
В принципе, если у меня есть шаблон, который НЕ называется header
(header
- это просто баннер "НЕ РЕДАКТИРОВАТЬ" для сгенерированного контента - его перемещение я думаю, что scripts/templates/common
было бы разумно здесь), затем запустите сценарий render
с именем шаблона в качестве аргумента (без части '.template').
Это выполнимо?
Кроме того, есть ли способ аннулировать цели, если они были отредактированы (их не должно было быть, потому что это большой большой баннер), поэтому принудительно пересобрать, если make запускается снова?
EDIT : Обновлен Makefile на основе комментариев ниже.
TEMPLATES := $(patsubst scripts/templates/%.template.php,%.tf,$(wildcard scripts/templates/*.template.php))
render: $(TEMPLATES)
@echo Completed
%.tf: scripts/templates/%.template.php scripts/templates/common/header.template.php locals.json scripts/render.php
@php scripts/render.php $(subst .tf,,$@)