Scons (Build System) Переменные: загрузить файл конфигурации с пользовательскими / неизвестными значениями - PullRequest
0 голосов
/ 25 июля 2011

У меня проблема с Scons.Variables. Я хочу использовать конфигурационные файлы с пользовательскими ключами и значениями. Моя идея загрузить конфигурационные файлы с ключами и значениями и использовать их с методом SubstFile. Например (грубый код):

vars = Variables('templateValues.conf')
vars_dict = vars.UnknownVariables().keys() # bad code, need something to convert vars to Python dictionary
env.Substfile('myconfig.cfg.in', SUBST_DICT = vars_dict)

Но vars.UnknownVariables () возвращает пустой список. Файл моего тестового шаблона:

version = 105
mode = 'release'
source = 'database'
emulate = 'no'

И vars.UknownVariables () называется:

vars = Variables('templateValues.conf')
print vars.UnknownVariables().keys()
# []

Может быть, кто-то попытается реализовать что-то подобное и может дать некоторые авансы?

1 Ответ

0 голосов
/ 26 июля 2011

Я не нашел необходимых инструментов в Scons, но Python великолепен (сейчас я новичок в python, изучаю только несколько дней).

Google дает мне несколько полезных ссылок, таких как SimpleConfigParser (я использую метод из CustomParser)

Реализовать это очень легко, и я получил то, что мне нужно:

Import('env')
templVars = parse_config('template.conf')
varEnv = env.Clone(tools = ['textfile', 'default'])
varEnv.Substfile('config.cfg.in', SUBST_DICT = templVars)

Содержимое файла config.cfg.in:

this is simple text with template values
Version is %version%
Build mode is %mode%

Emulator mode %emulate%

Thanks for using Avina !

Содержимое файла template.conf:

%version% = 105
%mode% = 'test1'
%source% = 'database'
%emulate% = 'no'

И файл результатов:

this is simple text with template values
Version is 105
Build mode is 'test1'

Emulator mode 'no'

Thanks for using Avina !
...