Template Toolkit
поставляется со своим собственным скриптом командной строки с именем ttree
для создания веб-сайтов TT ala make.
Вот файл ttree.cfg
Я часто использую проекты на веб-сайтах TT здесь, на моем Mac:
# directories
src = ./src
lib = ./lib
lib = ./content
dest = ./html
# pre process these site file
pre_process = site.tt
# copy these files
copy = \.(png|gif|jpg)$
# ignore following
ignore = \b(CVS|RCS)\b
ignore = ^#
ignore = ^\.DS_Store$
ignore = ^._
# other options
verbose
recurse
Просто запуск ttree -f ttree.cfg
перестроит сайт в dest
, только обновляя то, что было изменено в источнике (в src
) или вмои библиотеки (в lib
).
Для более детальных зависимостей посмотрите Template Dependencies
.
Обновление - И здесьмой удар по получению списка зависимостей путем подкласса Template::Provider
:
{
package MyProvider;
use base 'Template::Provider';
# see _dump_cache in Template::Provider
sub _dump_deps {
my $self = shift;
if (my $node = $self->{ HEAD }) {
while ($node) {
my ($prev, $name, $data, $load, $next) = @$node;
say {*STDERR} "$name called from " . $data->{caller}
if exists $data->{caller};
$node = $node->[ 4 ];
}
}
}
}
use Template;
my $provider = MyProvider->new;
my $tt = Template->new({
LOAD_TEMPLATES => $provider,
});
$tt->process( 'root.tt', {} ) or die $tt->error;
$provider->_dump_deps;
Приведенный выше код отображает все зависимости, вызываемые (через INCLUDE, INSERT, PROCESS и WRAPPER) и где вызывается изнутрицелое дерево root.tt
.Из этого вы можете построить файл зависимостей ttree
.
/ I3az /