Template Toolkit: Утилиты: ttree

Template Toolkit

(русская редакция)

[ Пособия ] [ Руководство ] [ Модули ] [ Библиотеки ] [ Утилиты ] [ Вопросы ] [ Релиз ] [ Perl-ресурсы ] Форум ]
 
Поиск
Template Toolkit | Утилиты | ttree

ttree

[ ◄ tpage ]
Обработка целых деревьев каталогов с шаблонами.

Оглавление

ОБЗОР

Индекс ] [ Утилиты ] [ Наверх ]

    ttree [options] [files]

ОПИСАНИЕ

Индекс ] [ Утилиты ] [ Наверх ]

Утилита ttree используется для обработки целых деревьев каталогов с файлами шаблонов. Результаты обработки каждого файла затем сохраняются в соответствующем файле в каталоге назначения. Скрипт сравнивает время модификации исходного и результирующего файлов (если последний существует) и обрабатывает только те файлы, которые были изменены. Другими словами, это эквивалент 'make' для Template Toolkit.

Утилита поддерживает ряд опций, которые используются для установки режимов работы, определения расположения файлов и катологов и установки опций Template Toolkit. Вначале утилита конфигурационный файл .ttreerc в домашнем каталоге (HOME), или альтернативный файл, заданный в переменной окружения TTREERC. Затем он обрабатывает аргументы командной строки, включая дополнительные файлы конфигурации, указанные через опцию '-f' (file).

Файл конфигурации .ttreerc

При первом запуске ttree, утилита предложит создать для вас файл .ttreerc. Он будет создан в вашем домашнем каталоге.

    $ ttree
    Do you want me to create a sample '.ttreerc' file for you?
    (file: /home/abw/.ttreerc)   [y/n]: y
    /home/abw/.ttreerc created.  Please edit accordingly and re-run ttree

Назначение этого файла - установка любых глобальных опций конфигурации, которые будут использоваться каждый раз при запуске ttree. Например, вы можете использовать опции 'ignore' и 'copy', чтобы задать регулярные выражения, определяющие какие файлы будут проигнорированы или вместо обработки парсером шаблонов скопированы. Также можно установить в соответствии с вашими предпочтениями флаги 'verbose' и 'recurse'.

Минимальный файл .ttreerc:

    # эти файлы игнорировать
    ignore = \b(CVS|RCS)\b
    ignore = ^#
    ignore = ~$
    # эти файлы копировать вместо обработки
    copy   = \.(gif|png|jpg|pdf)$ 
    # обрабатывать файлы во вложенных каталогах
    recurse
    # выводить информацию о ходе работы утилиты
    verbose

В большинстве случаев, может потребоваться создать отдельный файл конфигурации ttree для каждого рабочего проекта. Опция 'cfg' позволяет задать каталог, в котором ttree будет искать дополнительные файлы конфигурации.

    cfg = /home/abw/.ttree

Опция командной строки '-f' используется для указания какой конфигурационный файл будет использоваться. Можно указать как относительный так и абсолютный путь к файлу:

    $ ttree -f /home/abw/web/example/etc/ttree.cfg
    $ ttree -f ./etc/ttree.cfg
    $ ttree -f ../etc/ttree.cfg

Если путь не начинается с '/' или '.' или чего-нибудь напоминающего абсолютный путь MS-DOS (например, 'C:\\etc\\ttree.cfg'), то ttree будет искать файл в каталоге, определенном опцией 'cfg'.

    $ ttree -f test1          # /home/abw/.ttree/test1

Опцию 'cfg' можно использовать только в файле .ttreerc. Все остальные опции можно использовать как в файле .ttreerc, так и в любом другом файле конфигурации. Также их можно указывать в качестве аргументов командной строки.

Имейте в виду, что .ttreerc всегда обрабатывается до любого конфигурационного файла, указанного с помощью опции '-f'. Некоторые опции, такие как 'lib', можно указывать много раз, и все значения будут собраны вместе.

Рассмотрим, например, следующие конфигурационные файлы:

/home/abw/.ttreerc:

    cfg = /home/abw/.ttree
    lib = /usr/local/tt2/templates

/home/abw/.ttree/myconfig:

    lib = /home/abw/web/example/templates/lib

Когда ttree вызывается следующим образом:

    $ ttree -f myconfig

опции 'lib' будет содержать следующие каталоги:

    /usr/local/tt2/templates
    /home/abw/web/example/templates/lib

Любые шаблоны, расположенные внутри каталога /usr/local/tt2/templates будут приоритетней, чем соответствующие в каталоге /home/abw/web/example/templates/lib. Это может как соответствовать вашим потребностям, так и нет. По этой причине, хорошей практикой будет оставить файл .ttreerc насколько возможно простым и использовать различные конфигурационные файлы для каждого проекта ttree.

Опции каталогов

Опция 'src' определяет каталог с шаблонами для обработки. Ее можно указать в качестве аргумента командной строки или внутри конфигурационного файла, как в приведенном ниже примере:

    src = /home/abw/web/example/templates/src

Каждый шаблон в этом каталоге обычно соответсвует одной веб-странице или другому документу.

Опция 'dest' определяет каталог назначения для сгенерированного вывода.

    dest = /home/abw/web/example/html

Опция 'lib' используется для определения одного или более каталогов, содержащих дополнительные библиотечные шаблоны. Эти шаблоны не являются полноценными документами и обычно содержат более мелкие модульные компоненты, такие как шапки, подвалы и меню, которые включаются в шаблоны страниц.

    lib = /home/abw/web/example/templates/lib
    lib = /usr/local/tt2/templates

Опцию 'lib' можно указывать повторно, чтобы добавить дополнительные каталоги к пути поиска.

Список шаблонов можно передать утилите ttree как аргументы командной строки.

    $ ttree foo.html bar.html

Утилита ищет эти шаблоны в каталоге 'src' и обрабатывает их с помощью Template Toolkit, используя дополнительные шаблонные компоненты из каталогов 'lib'. Затем полученный результат записывается в соответствующий файл в каталоге 'dest'.

Если ttree вызывается без явного указания каких-либо шаблонов, то утилита обработает каждый файл в каталоге 'src'. Если установлена опция '-r' (recurse), она дополнительно пойдет вглубь подкаталогов и обработает другие шаблоны, которые в них найдет.

    $ ttree -r

Если шаблон ранее обрабатывался, ttree сравнивает время модификации исходного и результирующего файлов. Если исходный шаблон и ни один из шаблонов, от которых он зависит, не изменялись после последней генерации результирующего файла, то ttree не будет обрабатывать его. Опция -a (all) используется для принудительной обработки всех файлов утилитой ttree независимо от времени модификации.

    $ tree -a

Все шаблоны, явно указанные в командной строке, обрабатываются всегда, проверка времени модификации не производится.

Опции файлов

Опции 'ignore', 'copy' и 'accept' используются для фильтрации имен файлов с помощью регулярных выражений perl. Файлы, которые соответсвуют одной из опций 'ignore' не будут обрабатываться. Оставшиеся файлы, которые соответствуют одному из регулярных выражений опций 'copy', будут скопированы в каталог назначения. Остальные файлы, которые соответствуют любому из условий 'accept', будут обработаны с помощью Template Toolkit. Если параметр 'accept' не указан все файлы будут обработаны, за исключением копируемых ('copy') или пропускаемых ('ignore').

    # эти файлы игнорируем
    ignore = \b(CVS|RCS)\b
    ignore = ^#
    ignore = ~$
    # эти файлы копируем
    copy   = \.(gif|png|jpg|pdf)$ 
    # обрабатываем только шаблоны .tt2
    accept = \.tt2$

Опция 'suffix' используется для определения соответствий между расширениями файлов шаблонов и результирующих файлов. Следующий пример определяет, что обработанные исходные шаблоны, оканчивающиеся на '.tt2' будут сохранены в файлы с расширением '.html':

    suffix tt2=html

Или через командную строку,

    --suffix tt2=html

Можно определить любое количество соответствий суффиксов (расширений), повторно используя эту опцию.

Зависимости шаблонов

Опции 'depend' и 'depend_file' позволяют указать зависимость определенного шаблона от другого файла или группы файлов. Опция 'depend' используется для простой установки единичной зависимости.

  $ ttree --depend foo=bar,baz

Этот пример командной строки показывает, как использовать опцию '--depend', чтобы установить зависимость файла foo от шаблонов bar и baz. Эту опцию можно использовать в командной строке много раз:

  $ ttree --depend foo=bar,baz --depend crash=bang,wallop

или в конфигурационном файле:

  depend foo=bar,baz
  depend crash=bang,wallop

Путь к файлу слева от '=', указывается относитльно каталогов 'src' или 'lib'. Пути к файлу (файлам) в правой части указываются либо относительно этих каталогов, либо как абсолютные пути.

Например:

  $ ttree --depend foo=bar,/tmp/baz

Для определения зависимости, которая применяется ко всем файлам, используйте '*' слева от '='.

  $ ttree --depend *=header,footer

или в конфигурационном файле:

  depend *=header,footer

Любые шаблоны, которые определены в опциях 'pre_process', 'post_process', 'process' или 'wrapper' будут автоматически добавлены к списку глобальных зависимостей, которые применяются ко всем шаблонам.

Опция 'depend_file' используется для указания файла зависимостей.

    $ ttree --depend_file=/home/abw/web/example/etc/ttree.dep

Ниже приведен пример файла зависимостей:

   # Это комментарий. Он игнорируется.

   index.html: header footer menubar

   header: titlebar hotlinks

   menubar: menuitem

   # объединение нескольких строк с помощью обратного слэша
   another.html: header footer menubar \
   sidebar searchform

Строки, начинающиеся с символа '#', являются комментариями и игнорируются. Также пропускаются пустые строки. Остальные строки должны содержать имя файла, двоеточие и затем список файлов, от которых он зависит, разделенных пробелами или запятыми. Пробелы вокруг двоеточия также допустимы. Строка, завершающаяся символом '\' продолжается на следующую.

Имена файлов, содержащие пробелы, можно заключать в кавычки. Для таких файлов, указанных в правой части (после двоеточия ':') это нужно делать обязательно. Файл до двоеточия можно заключить в кавычки, если имя содержит двоеточие.

Как и в случае командной строки, символ '*' можно использовать как групповой символ, для определения зависимости для всех шаблонов.

    * : config,header

Опции Template Toolkit

ttree также позволяет устанавливать обычно используемые опции Template Toolkit. Например, опции ttree '--pre_chomp' и '--post_chomp' соответствуют опциям 'PRE_CHOMP' and 'POST_CHOMP'.

Для получения сводки доступных опций запустите 'ttree -h'.

АВТОРЫ

Индекс ] [ Утилиты ] [ Наверх ]

Энди Уардли (Andy Wardley <abw@andywardley.com>)

http://www.andywardley.com/

При содействии Дилана Уильяма Хадисона (Dylan William Hardison) (поддержка зависимостей), Брайса Харрингтона (Bryce Harrington) (опции 'absolute' и 'relative'), Марка Андерсона Mark Anderson (опции 'suffix' и 'debug'), Харальда Джорга (Harald Joerg) и Леона Брокарда (Leon Brocard), которые, кажется, поучаствовали во всем.

ВЕРСИЯ

Индекс ] [ Утилиты ] [ Наверх ]

2.70, поставляется в составе Template Toolkit версии 2.14, дата релиза - 4 октября 2004.

АВТОРСКИЕ ПРАВА

Индекс ] [ Утилиты ] [ Наверх ]

  Copyright (C) 1996-2004 Andy Wardley.  All Rights Reserved.
  Copyright (C) 1998-2002 Canon Research Centre Europe Ltd.

Этот модуль является свободно-распространяемым программным обеспечением; вы можете распространять и/или модифицировать его на тех же условиях, что и Perl.

СМОТРИ ТАКЖЕ

Индекс ] [ Утилиты ] [ Наверх ]