-
Notifications
You must be signed in to change notification settings - Fork 33
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
5 changed files
with
255 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,251 @@ | ||
////////////////////////////////////////////////////////////////////// | ||
// Позаимствовано из пакета opm | ||
// https://github.com/oscript-library/opm | ||
// | ||
////////////////////////////////////////////////////////////////////// | ||
// | ||
// Fluent-API для описания пакета | ||
// | ||
////////////////////////////////////////////////////////////////////// | ||
|
||
Перем мСвойстваПакета; | ||
Перем мЗависимости; | ||
Перем мМодули; | ||
Перем мВключаемыеФайлы; | ||
Перем мИсполняемыеФайлы; | ||
|
||
Перем ТипыМодулей Экспорт; | ||
|
||
////////////////////////////////////////////////////////////////////// | ||
// ПРОГРАММНЫЙ ИНТЕРФЕЙС | ||
|
||
Функция Имя(Знач Параметр) Экспорт | ||
УстановитьСвойствоПакета("Имя", Параметр); | ||
Возврат ЭтотОбъект; | ||
КонецФункции | ||
|
||
Функция Версия(Знач Параметр) Экспорт | ||
УстановитьСвойствоПакета("Версия", Параметр); | ||
Возврат ЭтотОбъект; | ||
КонецФункции | ||
|
||
Функция Автор(Знач Параметр) Экспорт | ||
УстановитьСвойствоПакета("Автор", Параметр); | ||
Возврат ЭтотОбъект; | ||
КонецФункции | ||
|
||
Функция Описание(Знач Параметр) Экспорт | ||
УстановитьСвойствоПакета("Описание", Параметр); | ||
Возврат ЭтотОбъект; | ||
КонецФункции | ||
|
||
Функция АдресАвтора(Знач Параметр) Экспорт | ||
УстановитьСвойствоПакета("АдресАвтора", Параметр); | ||
Возврат ЭтотОбъект; | ||
КонецФункции | ||
|
||
Функция ВерсияСреды(Знач Параметр) Экспорт | ||
УстановитьСвойствоПакета("ВерсияСреды", Параметр); | ||
Возврат ЭтотОбъект; | ||
КонецФункции | ||
|
||
Функция ВерсияМанифеста(Знач Параметр) Экспорт | ||
УстановитьСвойствоПакета("ВерсияМанифеста", Параметр); | ||
Возврат ЭтотОбъект; | ||
КонецФункции | ||
|
||
Функция ТочкаВхода(Знач Параметр) Экспорт | ||
УстановитьСвойствоПакета("ТочкаВхода", Параметр); | ||
Возврат ЭтотОбъект; | ||
КонецФункции | ||
|
||
Функция Задачи(Знач Параметр) Экспорт | ||
УстановитьСвойствоПакета("Задачи", Параметр); | ||
Возврат ЭтотОбъект; | ||
КонецФункции | ||
|
||
Функция Свойства() Экспорт | ||
|
||
// Проверка обязательных свойств | ||
Если Не мСвойстваПакета.Свойство("Имя") или Не ЗначениеЗаполнено(мСвойстваПакета.Имя) Тогда | ||
ВызватьИсключение "Не задано имя пакета"; | ||
КонецЕсли; | ||
|
||
Если Не мСвойстваПакета.Свойство("Версия") или Не ЗначениеЗаполнено(мСвойстваПакета.Версия) Тогда | ||
ВызватьИсключение "Не задана версия пакета"; | ||
КонецЕсли; | ||
|
||
КопияСвойств = Новый Структура; | ||
Для Каждого Свойство Из мСвойстваПакета Цикл | ||
КопияСвойств.Вставить(Свойство.Ключ, Свойство.Значение); | ||
КонецЦикла; | ||
|
||
Возврат КопияСвойств; | ||
|
||
КонецФункции | ||
|
||
|
||
////////////////////////////////////////////////////////////////////// | ||
// Зависимости | ||
|
||
Функция ЗависитОт(Знач ИмяПакета, Знач МинимальнаяВерсия = Неопределено, Знач МаксимальнаяВерсия = Неопределено) Экспорт | ||
|
||
Зависимость = Зависимость(ИмяПакета); | ||
Если Зависимость = Неопределено Тогда | ||
Зависимость = мЗависимости.Добавить(); | ||
Зависимость.ИмяПакета = ИмяПакета; | ||
КонецЕсли; | ||
|
||
Зависимость.ДляРазработки = Ложь; | ||
|
||
Если МинимальнаяВерсия = Неопределено Тогда | ||
Возврат ЭтотОбъект; | ||
КонецЕсли; | ||
|
||
Зависимость.МинимальнаяВерсия = МинимальнаяВерсия; | ||
Зависимость.МаксимальнаяВерсия = МаксимальнаяВерсия; | ||
|
||
Возврат ЭтотОбъект; | ||
|
||
КонецФункции | ||
|
||
Функция РазработкаЗависитОт( | ||
Знач ИмяПакета, | ||
Знач МинимальнаяВерсия = Неопределено, | ||
Знач МаксимальнаяВерсия = Неопределено) Экспорт | ||
|
||
Зависимость = Зависимость(ИмяПакета); | ||
Если Зависимость = Неопределено Тогда | ||
Зависимость = мЗависимости.Добавить(); | ||
Зависимость.ИмяПакета = ИмяПакета; | ||
Зависимость.ДляРазработки = Истина; | ||
КонецЕсли; | ||
|
||
Если МинимальнаяВерсия = Неопределено Тогда | ||
Возврат ЭтотОбъект; | ||
КонецЕсли; | ||
|
||
Зависимость.МинимальнаяВерсия = МинимальнаяВерсия; | ||
Зависимость.МаксимальнаяВерсия = МаксимальнаяВерсия; | ||
|
||
Возврат ЭтотОбъект; | ||
|
||
КонецФункции | ||
|
||
Функция Зависимость(Знач ИмяПакета) Экспорт | ||
|
||
Возврат мЗависимости.Найти(ИмяПакета, "ИмяПакета"); | ||
|
||
КонецФункции | ||
|
||
Функция Зависимости() Экспорт | ||
Возврат мЗависимости.Скопировать(); | ||
КонецФункции | ||
|
||
////////////////////////////////////////////////////////////////////// | ||
// Модули пакета | ||
|
||
Функция ОпределяетКласс(Знач Идентификатор, Знач Файл) Экспорт | ||
|
||
ЗарегистрироватьМодульПакета(Идентификатор, Файл, ТипыМодулей.Класс); | ||
Возврат ЭтотОбъект; | ||
|
||
КонецФункции | ||
|
||
Функция Классы() Экспорт | ||
Возврат мМодули.Скопировать(Новый Структура("Тип", ТипыМодулей.Класс)); | ||
КонецФункции | ||
|
||
Функция ОпределяетМодуль(Знач Идентификатор, Знач Файл) Экспорт | ||
|
||
ЗарегистрироватьМодульПакета(Идентификатор, Файл, ТипыМодулей.Модуль); | ||
Возврат ЭтотОбъект; | ||
|
||
КонецФункции | ||
|
||
Функция Модули() Экспорт | ||
Возврат мМодули.Скопировать(Новый Структура("Тип", ТипыМодулей.Модуль)); | ||
КонецФункции | ||
|
||
Функция ВсеМодулиПакета() Экспорт | ||
Возврат мМодули.Скопировать(); | ||
КонецФункции | ||
|
||
Процедура ЗарегистрироватьМодульПакета(Знач Идентификатор, Знач Файл, Знач Тип) | ||
УжеЕсть = мМодули.НайтиСтроки(Новый Структура("Идентификатор,Тип", Идентификатор, Тип)); | ||
Если УжеЕсть.Количество() Тогда | ||
ВызватьИсключение "Уже определен " + НРег(тип) + " с именем " + Идентификатор; | ||
КонецЕсли; | ||
|
||
Объявление = мМодули.Добавить(); | ||
Объявление.Идентификатор = Идентификатор; | ||
Объявление.Файл = Файл; | ||
Объявление.Тип = Тип; | ||
|
||
КонецПроцедуры | ||
|
||
////////////////////////////////////////////////////////////////////// | ||
// Включаемые файлы | ||
|
||
Функция ВключитьФайл(Знач ИсходныйПуть) Экспорт | ||
|
||
мВключаемыеФайлы.Добавить(ИсходныйПуть); | ||
Возврат ЭтотОбъект; | ||
|
||
КонецФункции | ||
|
||
Функция ВключаемыеФайлы() Экспорт | ||
Возврат мВключаемыеФайлы; | ||
КонецФункции | ||
|
||
////////////////////////////////////////////////////////////////////// | ||
// Исполняемые файлы | ||
|
||
Функция ИсполняемыйФайл(Знач Путь, Знач ИмяПриложения = "") Экспорт | ||
Стр = мИсполняемыеФайлы.Добавить(); | ||
Стр.Путь = Путь; | ||
Стр.ИмяПриложения = ИмяПриложения; | ||
|
||
Возврат ЭтотОбъект; | ||
КонецФункции | ||
|
||
Функция ИсполняемыеФайлы() Экспорт | ||
Возврат мИсполняемыеФайлы; | ||
КонецФункции | ||
|
||
////////////////////////////////////////////////////////////////////// | ||
// Вспомогательные функции | ||
|
||
Процедура УстановитьСвойствоПакета(Знач Имя, Знач Значение) | ||
мСвойстваПакета.Вставить(Имя, Значение); | ||
КонецПроцедуры | ||
|
||
////////////////////////////////////////////////////////////////////// | ||
// | ||
|
||
Процедура Инициализация() | ||
|
||
мСвойстваПакета = Новый Структура; | ||
|
||
мЗависимости = Новый ТаблицаЗначений; | ||
мЗависимости.Колонки.Добавить("ИмяПакета"); | ||
мЗависимости.Колонки.Добавить("ДляРазработки", Новый ОписаниеТипов("Булево")); | ||
мЗависимости.Колонки.Добавить("МинимальнаяВерсия"); | ||
мЗависимости.Колонки.Добавить("МаксимальнаяВерсия"); | ||
|
||
мМодули = Новый ТаблицаЗначений; | ||
мМодули.Колонки.Добавить("Идентификатор"); | ||
мМодули.Колонки.Добавить("Файл"); | ||
мМодули.Колонки.Добавить("Тип"); | ||
|
||
ТипыМодулей = Новый Структура("Класс,Модуль", "Класс", "Модуль"); | ||
|
||
мВключаемыеФайлы = Новый Массив; | ||
|
||
мИсполняемыеФайлы = Новый ТаблицаЗначений; | ||
мИсполняемыеФайлы.Колонки.Добавить("Путь"); | ||
мИсполняемыеФайлы.Колонки.Добавить("ИмяПриложения"); | ||
|
||
КонецПроцедуры | ||
|
||
Инициализация(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters