Feb. 2nd, 2017

smugastyi_kit: (Default)
Извечный вопрос... как писать конфигурационные файлы.

Изобрести 10000001-й формат, написать свой DSL, хранить все в XML, или вообще, вывести в конфиг конфигурационные переменные (как это сделал я).

Каждый подход, кроме последнего — добавляет лишний слой геммороя.
Доступ к переменным из конфига — удобен мне, но end-user может очень легко
все поломать, если не проверять каждый его шаг. А это гемморой похуже вышеупомянутого.

P.S. Эта штука пишется аж на MS PowerShell. А что, язык как язык. Местами даже приятный.
Только вот с variable scoping ребята в MS перемудрили.

UPD: И все таки написал я небольшой DSL-чик (который чем-то, неуловимо напоминает мне систему команд VMS). Как и ожидалось, больше пришлось ловить исключения и прочие edge-cases, чем писать разбор команд).

Под кат оно не убирается, глюки DW.
 

ADD_DEFAULT "VST3_32"
ADD_DEFAULT "VST3_64"
 
TARGET COMMON
ADD_DIR "dir_common"
 
TARGET VST3_64
ADD_LINK "C:\" "D:\"
#ADD_LINK "D:\" "E:\"
ADD_REG "test64.reg"
ADD_DIR "dir_vst364"
 
TARGET VST3_32
ADD_LINK "C:\" "D:\"
ADD_REG "test.reg"
ADD_DIR "C:\TEST"
 
smugastyi_kit: (Default)
Уиии... в PowerShell, оказывается, есть мои любимые лямбда-выражения!
Вот уж век живи — век учись.

Очень помогают соблюдать принцип DRY.

А вот интроспекция — в зачаточном состоянии.
Получить, без грязных хаков, символьное имя переменной на основе ссылки на нее — не получится. Наоборот, впрочем, тоже.