Могу ли я сделать предпосылки с одинаковым именем из переменных папок? - PullRequest
0 голосов
/ 09 ноября 2011

Я хочу написать make-файл с такими предпосылками:

syncdb: apps/%/models.py
    manage.py syncdb %
    touch syncdb

(или resetdb, но давайте просто поиграем с пустыми models.py и syncdb)

Но это не работает, оно обновляет syncdb каждый раз. Как создать правило, которое проверяет временные метки файлов models.py и запускает команды syncdb с папками, в которых обновляется models.py?

manage.py syncdb app-a app-b app-c ...

Примечание: Я знаю, что South больше подходит для миграции схем, но здесь я просто хочу иметь рабочее правило в Makefile.

Ответы [ 2 ]

1 голос
/ 09 ноября 2011

GNU make's $?кажется, сделано для этой работы.Предполагая, что переменная MODELS содержит все файлы apps / * / models.py (например, с помощью функции подстановки), вы можете объявить:

 syncdb : $(MODELS)
         manage.py syncdb $(dir $?)

и когда apps / one / models.py и apps / two /models.py изменен, вызов будет

 manage.py syncdb apps/one apps/two
1 голос
/ 09 ноября 2011

Я бы попробовал что-то с одним файлом в каждом приложении, чтобы соответствовать правилам шаблона.

apps/%/syncdb: apps/%/models.py
    manage.py syncdb $*
    touch $@

Тогда основное правило будет зависеть от всех приложений syncdb.

all_syncdb: apps/one/syncdb apps/two/syncdb ...

Или, если у вас есть переменная со всеми вашими приложениями:

APPS = one two ...
APPSSYNCDB = $(patsubst %,apps/%/syncdb,$(APPS))

all_syncdb: $(APPSSYNCDB)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...