Deploy config creator¶
Утилита живет в репозитории UTILITIES в решении DDM4. Предназначена для автоматического формирования скриптов для Deploy2 и файлов поставки по файлу Excel, например GTRK_2016_2_IT.xlsx. Примеры исходных таблиц расположены в корне проекта.
В силу непостоянства исходных файлов, низкой периодичности использования и невозможности предусмотреть все нюансы последующего использования, запуск утилиты производится из Visual Studio. Предварительно вносятся необходимые корректировки.
Особенность запуска¶
В силу использования модуля ClosedXML, в ряде случаев при использовании сложных формул в таблице Excel, получаются некорректные данные. Решение - сохранить файл с посчитанными значениями вместо формул.
Структура¶
- В корне проекта расположены ранее использованные файлы, например
GTRK_2015_10_IT.xlsxиGTRK_2016_2_IT.xlsx - Файл install.php - является шаблоном для итогового файла скрипта для Deploy2, в него можно вносить корректировки для описания новых приложений Digispot
- Creator.cs - главный файл программы, в котором производится разбор файла Excel и формирование итоговых результатов
- Результат помещается в файл
.\bin\Debug\install.php, в каталог.\bin\Debug\Ordersскладываются файлы поставок, в каталог.\bin\Debug\Keysпопадают файлы ini-проектов DDM в том порядке, который используется на sql-srvr, в каталог.\bin\Debug\ForDeployэти же файлы складываются в удобном для Deploy2 виде
Принцип работы¶
В начале определены базовые строковые константы, в том числе и путь к файлу таблицы. Номера счетов и исполнителя нужно определить, поскольку эти данные будут вноситься в ini-файлы проектов и в файлы поставок.
Далее считывается содержимое таблицы данных и по названиям колонок производится разбор. При этом важными являются колонка "Номер ключа DSII" (заполняется заранее, последовательность ключей если их несколько должна совпадать с той, что в списке колонок ПО), а так же колонки после "ПО Digispot II", описывающие использование того или иного ПО Digispot и опции.
Пример разбора:
if (row.Field<string>("Аудио Логгер") == "1")
{
project.KeyNumber = key_numbers[key_index++];
project.SetPreset("Аудиологгер");
project.OptionValues["ASPL_AUDIO_LOG_CH"] = 2;
var program = new Lexx.Digispot.DDM.Orders.Program("Аудиологгер", "Приложение для контрольной записи аудиоэфира. Включает 1 стереоканал или 2 моноканала.");
program.Options.Add(new Lexx.Digispot.DDM.Orders.Option("Доп. аудиоканал", "Дополнительный стереоканал или два моноканала.", 5));
var key = new Key(project.KeyNumber, program);
order.Keys.Add(key);
project.Save(string.Format(@"Keys\{0}\{1} - {2}\{3}.ini", city, key.Number, program.Name.Replace(":", ""), project.Application.Name));
project.Save(string.Format(@"ForDeploy\{1}\{3}.ini", city, key.Number, program.Name.Replace(":", ""), project.Application.Name));
info.AppendLine(string.Format(@"array( ""{0}"", ""{1}"", ""{2}"", ""{3}"" ),", computer, "logger", key.Number, city_code));
}Здесь проверяется, определено ли для данной станции приложение "Аудио Логгер". Берется очередной номер ключа из списка, полученного из колонки "Номер ключа DSII". Устанавливается пресет DDM для приложения, добавляются опции. Формируется строка с информацией о ключе для добавления в файл поставки. Сохраняются ini-файлы проектов DDM в оба каталога назначения. Добавляется очередная строка для install.php