Используйте параметр командной строки fmpp в шаблоне - PullRequest
0 голосов
/ 02 мая 2018

У меня есть несколько шаблонов конфигурации, которые используют FMPP для генерации файлы конфигурации реального времени выполнения, основанные на информации в csv и свойствах файл (определенный в config.fmpp).

Я хочу иметь возможность настроить второй сервер кластера для той же задачи, используя тот же набор шаблонов и информацию config.fmpp. Тем не менее, есть небольшие различия, необходимые в сгенерированном конфиге времени выполнения, и я могу сделать это, если я знаю, на каком экземпляре сервера я («serverA» или «serverB»), используя стандартную переменную fmpp, такую ​​как ${myserver}.

Но должен быть только один набор шаблонов и конфигурационных файлов FMPP, поэтому мне нужно как-то получить значение "myserver" из среды выполнения среда на каждом сервере.

Некоторые из возможных вариантов:

  • передать значение myserver при вызове инструмента командной строки (лучший способ); или
  • получить его из переменной среды.

Есть ли у кого-нибудь пример кода, чтобы сделать что-либо из этого и какие-либо предложения о наилучшем подходе? Онлайн справка была бы отличной.

fmpp -S /home/me/sample-project/src -Param myserver:serverA

Настройки среды:

  • fmpp v0.9.14
  • freemarker v2.3.19

1 Ответ

0 голосов
/ 03 мая 2018

Используйте параметр командной строки -D (см. --help):

-D, --data=<TDD>  Creates shared data that all templates will see. <TDD> is the
                  Textual Data Definition, e.g.:
                  -D "properties(style.properties), onLine:true"
                  Note that paths like "style.properties" are relative to the
                  data root directory.

Как:

fmpp -S /home/me/sample-project/src -D myserver:serverA

Обратите внимание, что после -D есть пробел. (Это не похоже на синтаксис командной строки Java, а скорее на стандартный синтаксис командной строки GNU.

Этот -D не имеет ничего общего с опцией Java -D.

Документация показывает onLine:true, но такие логические значения являются устаревшими и более не принимаются. Используйте online:yes для анализа логических значений.

Например:

fmpp \
  -S /path/ \
  --verbose \
  -D "online:yes"

Затем внутри шаблона:

<p>
  online: ${online}
</p>

Результат:

online: yes

Параметр командной строки --verbose полезен для отображения ошибок при синтаксическом анализе шаблона.

...