diff --git a/.gitignore b/.gitignore index a8aec03..e60a48d 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ oscript_modules/ +test-reports/ \ No newline at end of file diff --git a/README.md b/README.md index 8d6dd6a..650c92b 100644 --- a/README.md +++ b/README.md @@ -19,3 +19,7 @@ OneScript Package Manager Справка из википедии: [Система управления пакетами](https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D0%B0%D0%BC%D0%B8) +# Сервера +В настоящее время пакеты хранятся на двух серверах: +- [hub.oscript.io](http://hub.oscript.io/download) - основной хаб пакетов +- [hub.oscript.ru](http://hub.oscript.ru/download) - вторичный хаб пакетов. Используется, когда не удаётся получить данные с основного хаба diff --git a/packagedef b/packagedef index 1b25574..66d5e07 100644 --- a/packagedef +++ b/packagedef @@ -1,5 +1,5 @@ -ПутьКСценариюКонстант = ОбъединитьПути(ТекущийСценарий().Каталог, "src", "Модули", "Константы.os"); +ПутьКСценариюКонстант = ОбъединитьПути(ТекущийСценарий().Каталог, "src", "Модули", "КонстантыOpm.os"); Константы_ЛокальнаяВерсия = ЗагрузитьСценарий(ПутьКСценариюКонстант); Описание.Имя("opm") @@ -8,6 +8,7 @@ .ЗависитОт("logos") .ЗависитОт("cmdline") .ЗависитОт("tempfiles") + .ЗависитОт("1testrunner") .ВключитьФайл("src") .ОпределяетКласс("ОписаниеПакета", "src/Классы/ОписаниеПакета.os") .ИсполняемыйФайл("src/opm.os"); diff --git a/src/opm.os b/src/opm.os index 78fb0cd..fe7d85a 100644 --- a/src/opm.os +++ b/src/opm.os @@ -1,4 +1,4 @@ -///////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////// // // OneScript Package Manager // Установщик пакетов для OneScript @@ -6,55 +6,68 @@ // // opm install my-package.ospx // -///////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// +// +// CLI-интерфейс для oscript-app +// +/////////////////////////////////////////////////////////////////////// #Использовать cmdline -#Использовать logos - #Использовать "." Перем Лог; -Процедура ВыполнитьКоманду(Знач Аргументы) - - ОбработкаКоманд = СоздатьОбработчикКоманд(); - Парсер = Новый ПарсерАргументовКоманднойСтроки(); - - ОбработкаКоманд.ДобавитьОписанияКоманд(Парсер); - - ПараметрыКоманды = Парсер.РазобратьКоманду(Аргументы); - Если ПараметрыКоманды = Неопределено Тогда - ВывестиСправкуПоКомандам(ОбработкаКоманд); - ЗавершитьРаботу(1); - КонецЕсли; - - Попытка - ОбработкаКоманд.ВыполнитьКоманду(ПараметрыКоманды); - Исключение - Лог.Отладка(ОписаниеОшибки()); - Лог.Информация(КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); - ЗавершитьРаботу(1); - КонецПопытки; - -КонецПроцедуры +///////////////////////////////////////////////////////////////////////////////////////// -Процедура ВывестиСправкуПоКомандам(Знач ОбработкаКоманд) - - ОбработкаКоманд.ВывестиСправкуПоКомандам(); +Функция ПолучитьПарсерКоманднойСтроки() + + Парсер = Новый ПарсерАргументовКоманднойСтроки(); + + МенеджерКомандПриложенияOpm.ЗарегистрироватьКоманды(Парсер); + + Возврат Парсер; + +КонецФункции + +Функция ПолезнаяРабота() + ПараметрыЗапуска = РазобратьАргументыКоманднойСтроки(); + Если ПараметрыЗапуска = Неопределено или ПараметрыЗапуска.Количество() = 0 Тогда + Лог.Ошибка("Некорректные аргументы командной строки"); + МенеджерКомандПриложенияOpm.ПоказатьСправкуПоКомандам(); + Возврат 1; + КонецЕсли; -КонецПроцедуры + НастройкиПриложенияOpm.УстановитьФайлНастроек(ОбъединитьПути(СтартовыйСценарий().Каталог, "opm.cfg")); -///////////////////////////////////////////////////////////////////////// -// Вспомогательные функции + Если ТипЗнч(ПараметрыЗапуска) = Тип("Структура") Тогда + // это команда + Команда = ПараметрыЗапуска.Команда; + ЗначенияПараметров = ПараметрыЗапуска.ЗначенияПараметров; + ИначеЕсли ЗначениеЗаполнено(ПараметрыСистемыOpm.ИмяКомандыПоУмолчанию()) Тогда + // это команда по-умолчанию + Команда = ПараметрыСистемыOpm.ИмяКомандыПоУмолчанию(); + ЗначенияПараметров = ПараметрыЗапуска; + Иначе + ВызватьИсключение "Некорректно настроено имя команды по-умолчанию."; + КонецЕсли; + + Возврат МенеджерКомандПриложенияOpm.ВыполнитьКоманду(Команда, ЗначенияПараметров); + +КонецФункции -Функция СоздатьОбработчикКоманд() - Возврат Новый ДиспетчерКомандПриложения(); +Функция РазобратьАргументыКоманднойСтроки() + Парсер = ПолучитьПарсерКоманднойСтроки(); + Возврат Парсер.Разобрать(АргументыКоманднойСтроки); КонецФункции ///////////////////////////////////////////////////////////////////////// -// Точка входа -Лог = Логирование.ПолучитьЛог(Константы.ИмяЛога); +Лог = Логирование.ПолучитьЛог(ПараметрыСистемыOpm.ИмяЛогаСистемы()); +МенеджерКомандПриложенияOpm.РегистраторКоманд(ПараметрыСистемыOpm); -НастройкиПриложения.УстановитьФайлНастроек(ОбъединитьПути(СтартовыйСценарий().Каталог, "opm.cfg")); -ВыполнитьКоманду(АргументыКоманднойСтроки); \ No newline at end of file +Попытка + ЗавершитьРаботу(ПолезнаяРабота()); +Исключение + Лог.КритичнаяОшибка(ОписаниеОшибки()); + ЗавершитьРаботу(255); +КонецПопытки; diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\224\320\270\321\201\320\277\320\265\321\202\321\207\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\224\320\270\321\201\320\277\320\265\321\202\321\207\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" deleted file mode 100644 index 05edf9e..0000000 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\224\320\270\321\201\320\277\320\265\321\202\321\207\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" +++ /dev/null @@ -1,343 +0,0 @@ - -#Использовать logos - -Перем Лог; -Перем ЭтоWindows; - -Процедура ДобавитьОписанияКоманд(Знач Парсер) Экспорт - ДобавитьКомандуBuild(Парсер); - ДобавитьКомандуRun(Парсер); - ДобавитьКомандуTest(Парсер); - ДобавитьКомандуPrepare(Парсер); - ДобавитьКомандуInstall(Парсер); - ДобавитьКомандуUpdate(Парсер); - ДобавитьКомандуApp(Парсер); - ДобавитьКомандуConfig(Парсер); - ДобавитьКомандуList(Парсер); - ДобавитьКомандуVersion(Парсер); - ДобавитьКомандуHelp(Парсер); -КонецПроцедуры - -///////////////////////////////////////////////////////////////////////// -// Описания команд - -Процедура ДобавитьКомандуPrepare(Знач Парсер) - Команда = Парсер.ОписаниеКоманды("prepare", "Подготовить новый каталог разрабатываемого пакета"); - Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "КаталогСборкиПакета", "Каталог, в котором будет вестись разработка"); - Парсер.ДобавитьКоманду(Команда); -КонецПроцедуры - -Процедура ДобавитьКомандуBuild(Знач Парсер) - Команда = Парсер.ОписаниеКоманды("build", "Собрать пакет из исходников"); - Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "КаталогИсходников", "Каталог исходников"); - Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-mf", "Файл манифеста сборки (packagedef)"); - Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-out", "Выходной каталог"); - Парсер.ДобавитьКоманду(Команда); -КонецПроцедуры - -Процедура ДобавитьКомандуRun(Знач Парсер) - Команда = Парсер.ОписаниеКоманды("run", "Выполнить произвольную задачу"); - Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "ИмяЗадачи", "Имя выполняемой задачи."); - Парсер.ДобавитьПараметрКоллекцияКоманды(Команда, "ПараметрыЗадачи", "Коллекция параметров, передаваемых задаче"); - Парсер.ДобавитьКоманду(Команда); -КонецПроцедуры - -Процедура ДобавитьКомандуTest(Знач Парсер) - Команда = Парсер.ОписаниеКоманды("test", "Выполнить тестирование проекта"); - Парсер.ДобавитьПараметрКоллекцияКоманды(Команда, "ПараметрыЗадачи", "Коллекция параметров, передаваемых задаче тестирования"); - Парсер.ДобавитьКоманду(Команда); -КонецПроцедуры - -Процедура ДобавитьКомандуInstall(Знач Парсер) - Команда = Парсер.ОписаниеКоманды("install", "Выполнить установку. Если указано имя пакета, происходит установка из хаба или из файла. В обратном случае устанавливаются зависимости текущего пакета по файлу packagedef."); - Парсер.ДобавитьПараметрФлагКоманды(Команда, "-all", "Установить все пакеты, зарегистрированные в хабе"); - Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-f", "Указать файл из которого нужно установить пакет"); - Парсер.ДобавитьПараметрФлагКоманды(Команда, "-l", "Установить пакеты в локальный каталог oscript_modules"); - Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "ИмяПакета", "Имя пакета в хабе. Чтобы установить конкретную версию, используйте ИмяПакета@ВерсияПакета"); - Парсер.ДобавитьКоманду(Команда); -КонецПроцедуры - -Процедура ДобавитьКомандуUpdate(Знач Парсер) - Команда = Парсер.ОписаниеКоманды("update", "Обновить пакет"); - Парсер.ДобавитьПараметрФлагКоманды(Команда, "-all", "Обновить все установленные пакеты"); - Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-f", "Указать файл из которого нужно установить пакет"); - Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "ИмяПакета", "Имя пакета в хабе. Чтобы установить конкретную версию, используйте ИмяПакета@ВерсияПакета"); - Парсер.ДобавитьКоманду(Команда); -КонецПроцедуры - -Процедура ДобавитьКомандуApp(Знач Парсер) - Команда = Парсер.ОписаниеКоманды("app", "Создать " + ?(ЭтоWindows, "bat", "sh") + "-файл для запуска скрипта в указанном каталоге"); - Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "ИмяСкрипта", "Имя скрипта в текущем каталоге или полный путь скрипта"); - Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "Каталог", "(необязательно) Каталог, в котором будет создан скрипт запуска. По умолчанию """ + КаталогПрограммы() + """"); - Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-name", "Имя генерируемого исполняемого файла"); - Парсер.ДобавитьКоманду(Команда); -КонецПроцедуры - -Процедура ДобавитьКомандуConfig(Знач Парсер) - Команда = Парсер.ОписаниеКоманды("config", "Задать пользовательские настройки"); - Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-winCreateBashLauncher","Создавать sh-скрипт запуска для пакетов приложений в среде Windows"); - Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "-proxyusedefault","Использовать ПроксиПоУмолчанию (системные настройки)"); - Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-proxyserver", "Адрес прокси"); - Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-proxyport", "Порт прокси"); - Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-proxyuser", "Пользователь прокси "); - Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-proxypass", "Пароль прокси"); - Парсер.ДобавитьКоманду(Команда); - КонецПроцедуры - -Процедура ДобавитьКомандуList(Знач Парсер) - Команда = Парсер.ОписаниеКоманды("list", "Вывести список пакетов"); - Парсер.ДобавитьПараметрФлагКоманды(Команда, "-q", """Тихий"" режим вывода без лишних сообщений."); - Парсер.ДобавитьПараметрФлагКоманды(Команда, "-remote", "Вывести список пакетов в хабе"); - Парсер.ДобавитьКоманду(Команда); -КонецПроцедуры - -Процедура ДобавитьКомандуVersion(Знач Парсер) - Команда = Парсер.ОписаниеКоманды("version", "Вывести версию продукта"); - Парсер.ДобавитьКоманду(Команда); -КонецПроцедуры - -Процедура ДобавитьКомандуHelp(Знач Парсер) Экспорт - Команда = Парсер.ОписаниеКоманды("help", "Справка по командам"); - Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "ИмяКоманды", "Имя команды по которой надо получить справку"); - Парсер.ДобавитьКоманду(Команда); -КонецПроцедуры - -Процедура ВыполнитьКоманду(Знач ПараметрыКоманды) Экспорт - - Если ПараметрыКоманды.Команда <> "version" И ПараметрыКоманды.Команда <> "help" Тогда - ВывестиВерсию(); - КонецЕсли; - - ЗначенияПараметров = ПараметрыКоманды.ЗначенияПараметров; - Если ПараметрыКоманды.Команда = "build" Тогда - ВыполнитьСборку(ЗначенияПараметров["КаталогИсходников"], ЗначенияПараметров["-mf"], ЗначенияПараметров["-out"]); - ИначеЕсли ПараметрыКоманды.Команда = "run" Тогда - ВыполнитьЗадачу(ЗначенияПараметров["ИмяЗадачи"], ЗначенияПараметров["ПараметрыЗадачи"]); - ИначеЕсли ПараметрыКоманды.Команда = "test" Тогда - ВыполнитьЗадачу("test", ЗначенияПараметров["ПараметрыЗадачи"]); - ИначеЕсли ПараметрыКоманды.Команда = "prepare" Тогда - ПодготовитьКаталогПроекта(ЗначенияПараметров["КаталогСборкиПакета"]); - ИначеЕсли ПараметрыКоманды.Команда = "install" Тогда - УстановитьПакет(ЗначенияПараметров); - ИначеЕсли ПараметрыКоманды.Команда = "update" Тогда - ОбновитьПакет(ЗначенияПараметров); - ИначеЕсли ПараметрыКоманды.Команда = "app" Тогда - СоздатьСкриптЗапуска(ЗначенияПараметров["ИмяСкрипта"], ЗначенияПараметров["Каталог"], ЗначенияПараметров["-name"]); - ИначеЕсли ПараметрыКоманды.Команда = "config" Тогда - НастройкиПриложения.СохранитьНастройки(ЗначенияПараметров); - ИначеЕсли ПараметрыКоманды.Команда = "list" Тогда - ВывестиСписокПакетов(ЗначенияПараметров); - ИначеЕсли ПараметрыКоманды.Команда = "version" Тогда - ВывестиВерсиюКратко(); - ИначеЕсли ПараметрыКоманды.Команда = "help" Тогда - ВывестиСправку(ЗначенияПараметров); - КонецЕсли; - -КонецПроцедуры - -///////////////////////////////////////////////////////////////////////// -// Реализация команд - -Процедура УстановитьПакет(Знач ЗначенияПараметров) Экспорт - - Установщик = Новый УстановкаПакета; - - Если ЗначенияПараметров["-l"] Тогда - Установщик.УстановитьРежимУстановкиПакетов(РежимУстановкиПакетов.Локально); - Иначе - Установщик.УстановитьРежимУстановкиПакетов(РежимУстановкиПакетов.Глобально); - КонецЕсли; - - Если ЗначенияПараметров["-all"] Тогда - Установщик.УстановитьВсеПакетыИзОблака(); - ИначеЕсли ЗначенияПараметров["-f"] = Неопределено И ЗначенияПараметров["ИмяПакета"] = Неопределено Тогда - Установщик.УстановитьПакетыПоОписаниюПакета(); - ИначеЕсли ЗначенияПараметров["-f"] <> Неопределено Тогда - Установщик.УстановитьПакетИзАрхива(ЗначенияПараметров["-f"]); - Иначе - Установщик.УстановитьПакетИзОблака(ЗначенияПараметров["ИмяПакета"]); - КонецЕсли; - -КонецПроцедуры - -Процедура ВыполнитьСборку(Знач КаталогИсходников, Знач ФайлМанифеста, Знач ВыходнойКаталог) Экспорт - - Сборщик = Новый СборщикПакета(); - Сборщик.СобратьПакет(КаталогИсходников, ФайлМанифеста, ВыходнойКаталог); - -КонецПроцедуры - -Процедура ПодготовитьКаталогПроекта(Знач ВыходнойКаталог) Экспорт - - Сборщик = Новый СборщикПакета(); - Сборщик.ПодготовитьКаталогПроекта(ВыходнойКаталог); - -КонецПроцедуры - -Процедура ВыполнитьЗадачу(Знач ИмяЗадачи, Знач ПараметрыЗадачи) - - ИсполнительЗадач = Новый ИсполнительЗадач(); - ИсполнительЗадач.ВыполнитьЗадачу(ИмяЗадачи, ПараметрыЗадачи); - -КонецПроцедуры - -Процедура ОбновитьПакет(Знач ЗначенияПараметров) Экспорт - - Установщик = Новый УстановкаПакета; - Если ЗначенияПараметров["-all"] Тогда - Установщик.ОбновитьУстановленныеПакеты(); - ИначеЕсли ЗначенияПараметров["-f"] <> Неопределено Тогда - Установщик.УстановитьПакетИзАрхива(ЗначенияПараметров["-f"]); - Иначе - Установщик.ОбновитьПакетИзОблака(ЗначенияПараметров["ИмяПакета"]); - КонецЕсли; - -КонецПроцедуры - -Процедура СоздатьСкриптЗапуска(Знач ИмяСкрипта, Знач Каталог, Знач ИмяФайлаЗапуска) Экспорт - Если ИмяСкрипта = Неопределено Тогда - ВызватьИсключение "Не указано имя файла скрипта"; - КонецЕсли; - - ФайлСкрипта = Новый Файл(ИмяСкрипта); - ПолноеИмяСкрипта = ФайлСкрипта.ПолноеИмя; - Если Не ФайлСкрипта.Существует() Тогда - ФайлСкрипта = Новый Файл(ИмяСкрипта + ".os"); - Если Не ФайлСкрипта.Существует() Тогда - ВызватьИсключение "Файл скрипта """ + ПолноеИмяСкрипта + """ не найден"; - Иначе - ПолноеИмяСкрипта = ФайлСкрипта.ПолноеИмя; - КонецЕсли; - КонецЕсли; - - Если Не ФайлСкрипта.ЭтоФайл() Тогда - ВызватьИсключение "Указанный скрипт """ + ПолноеИмяСкрипта + """ не является файлом"; - КонецЕсли; - - Если Каталог = Неопределено Тогда - Каталог = КаталогПрограммы(); - КонецЕсли; - - ФайлКаталога = Новый Файл(Каталог); - Каталог = ФайлКаталога.ПолноеИмя; - Если ФайлКаталога.Существует() Тогда - Если ФайлКаталога.ЭтоФайл() Тогда - ВызватьИсключение "Указанный каталог """ + Каталог + """ является файлом"; - КонецЕсли; - Иначе - СоздатьКаталог(Каталог); - Если Не ФайлКаталога.Существует() Тогда - ВызватьИсключение "Не удалось создать каталог """ + Каталог + """"; - КонецЕсли; - КонецЕсли; - - ИмяСкриптаЗапуска = ?(ИмяФайлаЗапуска = Неопределено, ФайлСкрипта.ИмяБезРасширения, ИмяФайлаЗапуска); - Установщик = Новый УстановкаПакета; - Установщик.СоздатьСкриптЗапуска(ИмяСкриптаЗапуска, ПолноеИмяСкрипта, Каталог); - -КонецПроцедуры - -Процедура ВывестиСписокПакетов(Знач ЗначенияПараметров) - - ТихийРежим = ЗначенияПараметров["-q"]; - - Если ЗначенияПараметров["-remote"] Тогда - ТекстСообщения = СтрШаблон("Пакеты в хабе:"); - КэшПакетовВХабе = Новый КэшПакетовХаба(); - УстановленныеПакеты = КэшПакетовВХабе.ПолучитьПакетыХаба(); - Иначе - - ПутьККаталогуПакетов = ПолучитьЗначениеСистемнойНастройки("lib.system"); - ТекстСообщения = СтрШаблон("Пакеты в системном каталоге библиотек <%1>:", ПутьККаталогуПакетов); - - КэшУстановленныхПакетов = Новый КэшУстановленныхПакетов(); - УстановленныеПакеты = КэшУстановленныхПакетов.ПолучитьУстановленныеПакеты(); - КонецЕсли; - - Если НЕ ТихийРежим Тогда - Сообщить(ТекстСообщения); - КонецЕсли; - - Для Каждого УстановленныйПакет Из УстановленныеПакеты Цикл - СтрокаСообщения = УстановленныйПакет.Ключ; - Если ТипЗнч(УстановленныйПакет.Значение) = Тип("ОписаниеПакета") Тогда - ОписаниеПакета = УстановленныйПакет.Значение; - СтрокаСообщения = СтрокаСообщения + "@" + ОписаниеПакета.Свойства().Версия; - КонецЕсли; - Сообщить(СтрокаСообщения); - КонецЦикла; - -КонецПроцедуры - -Процедура ВывестиВерсиюКратко() - Сообщить(Константы.ВерсияПродукта); -КонецПроцедуры - -Процедура ВывестиВерсию() - Сообщить("OneScript Package Manager v" + Константы.ВерсияПродукта); - Сообщить(""); -КонецПроцедуры - -Процедура ВывестиСправку(Знач ЗначенияПараметров) - Если ЗначенияПараметров["ИмяКоманды"] = Неопределено Тогда - ВывестиСправкуПоКомандам(); - Иначе - ВывестиСправкуПоКоманде(ЗначенияПараметров["ИмяКоманды"]); - КонецЕсли; -КонецПроцедуры - -Процедура ВывестиСправкуПоКомандам() Экспорт - - Парсер = Новый ПарсерАргументовКоманднойСтроки; - ДобавитьОписанияКоманд(Парсер); - - ВозможныеКоманды = Парсер.СправкаВозможныеКоманды(); - ВывестиВерсию(); - Сообщить("Возможные команды:"); - - МаксШирина = 0; - Поле = " "; - Для Каждого Команда Из ВозможныеКоманды Цикл - ТекШирина = СтрДлина(Команда.Команда); - Если ТекШирина > МаксШирина Тогда - МаксШирина = ТекШирина; - КонецЕсли; - КонецЦикла; - - Для Каждого Команда Из ВозможныеКоманды Цикл - Сообщить(" " + Лев(Команда.Команда + Поле, МаксШирина + 2) + "- " + Команда.Пояснение); - КонецЦикла; - - Сообщить("Наберите opm help <команда>, чтобы вывести справку по команде"); - -КонецПроцедуры - -Процедура ВывестиСправкуПоКоманде(Знач ИмяКоманды) - - Парсер = Новый ПарсерАргументовКоманднойСтроки; - ДобавитьОписанияКоманд(Парсер); - - ВозможныеКоманды = Парсер.СправкаВозможныеКоманды(); - ОписаниеКоманды = ВозможныеКоманды.Найти(ИмяКоманды, "Команда"); - Если ОписаниеКоманды = Неопределено Тогда - Сообщить("Команда отсуствует: " + ИмяКоманды); - Возврат; - КонецЕсли; - - Сообщить("" + ОписаниеКоманды.Команда + " - " + ОписаниеКоманды.Пояснение); - Сообщить("Параметры:"); - Для Каждого СтрПараметр Из ОписаниеКоманды.Параметры Цикл - Если Не СтрПараметр.ЭтоИменованныйПараметр Тогда - Сообщить(СтрШаблон(" <%1> - %2", СтрПараметр.Имя, СтрПараметр.Пояснение)); - Иначе - Сообщить(СтрШаблон(" %1 - %2", СтрПараметр.Имя, СтрПараметр.Пояснение)); - КонецЕсли; - КонецЦикла; - -КонецПроцедуры - -///////////////////////////////////////////////////////////////////// - -Лог = Логирование.ПолучитьЛог(Константы.ИмяЛога); -СистемнаяИнформация = Новый СистемнаяИнформация; -ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0; diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\265\321\200\320\272\320\260\320\273\320\276.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\265\321\200\320\272\320\260\320\273\320\276.os" new file mode 100644 index 0000000..b295bda --- /dev/null +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\265\321\200\320\272\320\260\320\273\320\276.os" @@ -0,0 +1,45 @@ +Перем СерверУдаленногоХранилища Экспорт; +Перем ПутьВХранилище Экспорт; + +Перем Соединение; + +Функция ИнициализироватьСоединение() Экспорт + + Если Не Соединение = Неопределено Тогда + Возврат Соединение; + КонецЕсли; + + НастройкиПрокси = НастройкиПриложенияOpm.Получить().Прокси; + Если НастройкиПрокси.ИспользоватьПрокси Тогда + Прокси = Новый ИнтернетПрокси(НастройкиПрокси.ПроксиПоУмолчанию); + Если НастройкиПрокси.ПроксиПоУмолчанию Тогда + Прокси.Установить("http",НастройкиПрокси.Сервер,НастройкиПрокси.Порт,НастройкиПрокси.Пользователь,НастройкиПрокси.Пароль,НастройкиПрокси.ИспользоватьАутентификациюОС); + КонецЕсли; + Соединение = Новый HTTPСоединение(СерверУдаленногоХранилища,,,,Прокси); + Иначе + Соединение = Новый HTTPСоединение(СерверУдаленногоХранилища); + КонецЕсли; + + Возврат Соединение; + +КонецФункции + +// ИмяРесурса - имя файла относительно "Сервер/ПутьВХранилище" +// Возвращает HttpОтвет или Неопределено, если запрос вернул исключение. +Функция ПолучитьРесурс(Знач ИмяРесурса) Экспорт + + Соединение = ИнициализироватьСоединение(); + Ресурс = ПутьВХранилище + ИмяРесурса; + Запрос = Новый HTTPЗапрос(Ресурс); + + Попытка + + Возврат Соединение.Получить(Запрос); + + Исключение + + Возврат Неопределено; + + КонецПопытки; + +КонецФункции diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_App.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_App.os" new file mode 100644 index 0000000..409fc04 --- /dev/null +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_App.os" @@ -0,0 +1,72 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////// +// Прикладной интерфейс +Перем ЭтоWindows; + +Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт + + ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Создать " + ?(ЭтоWindows, "bat", "sh") + "-файл для запуска скрипта в указанном каталоге"); + Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "ИмяСкрипта", "Имя скрипта в текущем каталоге или полный путь скрипта"); + Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "Каталог", "(необязательно) Каталог, в котором будет создан скрипт запуска. По умолчанию """ + КаталогПрограммы() + """"); + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-name", "Имя генерируемого исполняемого файла"); + Парсер.ДобавитьКоманду(ОписаниеКоманды); + +КонецПроцедуры + +// Выполняет логику команды +// +// Параметры: +// ПараметрыКоманды - Соответствие ключей командной строки и их значений +// +Функция ВыполнитьКоманду(Знач ПараметрыКоманды) Экспорт + + СоздатьСкриптЗапуска(ПараметрыКоманды["ИмяСкрипта"], ПараметрыКоманды["Каталог"], ПараметрыКоманды["-name"]); + Возврат 0; + +КонецФункции + + +Процедура СоздатьСкриптЗапуска(Знач ИмяСкрипта, Знач Каталог, Знач ИмяФайлаЗапуска) Экспорт + Если ИмяСкрипта = Неопределено Тогда + ВызватьИсключение "Не указано имя файла скрипта"; + КонецЕсли; + + ФайлСкрипта = Новый Файл(ИмяСкрипта); + ПолноеИмяСкрипта = ФайлСкрипта.ПолноеИмя; + Если Не ФайлСкрипта.Существует() Тогда + ФайлСкрипта = Новый Файл(ИмяСкрипта + ".os"); + Если Не ФайлСкрипта.Существует() Тогда + ВызватьИсключение "Файл скрипта """ + ПолноеИмяСкрипта + """ не найден"; + Иначе + ПолноеИмяСкрипта = ФайлСкрипта.ПолноеИмя; + КонецЕсли; + КонецЕсли; + + Если Не ФайлСкрипта.ЭтоФайл() Тогда + ВызватьИсключение "Указанный скрипт """ + ПолноеИмяСкрипта + """ не является файлом"; + КонецЕсли; + + Если Каталог = Неопределено Тогда + Каталог = КаталогПрограммы(); + КонецЕсли; + + ФайлКаталога = Новый Файл(Каталог); + Каталог = ФайлКаталога.ПолноеИмя; + Если ФайлКаталога.Существует() Тогда + Если ФайлКаталога.ЭтоФайл() Тогда + ВызватьИсключение "Указанный каталог """ + Каталог + """ является файлом"; + КонецЕсли; + Иначе + СоздатьКаталог(Каталог); + Если Не ФайлКаталога.Существует() Тогда + ВызватьИсключение "Не удалось создать каталог """ + Каталог + """"; + КонецЕсли; + КонецЕсли; + + ИмяСкриптаЗапуска = ?(ИмяФайлаЗапуска = Неопределено, ФайлСкрипта.ИмяБезРасширения, ИмяФайлаЗапуска); + Установщик = Новый УстановкаПакета; + Установщик.СоздатьСкриптЗапуска(ИмяСкриптаЗапуска, ПолноеИмяСкрипта, Каталог); + +КонецПроцедуры + +СистемнаяИнформация = Новый СистемнаяИнформация; +ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0; \ No newline at end of file diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Build.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Build.os" new file mode 100644 index 0000000..b680f61 --- /dev/null +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Build.os" @@ -0,0 +1,31 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////// +// Прикладной интерфейс + +Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт + + ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Собрать пакет из исходников"); + Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "КаталогИсходников", "Каталог исходников"); + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-mf", "Файл манифеста сборки (packagedef)"); + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-out", "Выходной каталог"); + Парсер.ДобавитьКоманду(ОписаниеКоманды); + +КонецПроцедуры + +// Выполняет логику команды +// +// Параметры: +// ПараметрыКоманды - Соответствие ключей командной строки и их значений +// +Функция ВыполнитьКоманду(Знач ПараметрыКоманды) Экспорт + + ВыполнитьСборку(ПараметрыКоманды["КаталогИсходников"], ПараметрыКоманды["-mf"], ПараметрыКоманды["-out"]); + Возврат 0; + +КонецФункции + +Процедура ВыполнитьСборку(Знач КаталогИсходников, Знач ФайлМанифеста, Знач ВыходнойКаталог) Экспорт + + Сборщик = Новый СборщикПакета(); + Сборщик.СобратьПакет(КаталогИсходников, ФайлМанифеста, ВыходнойКаталог); + +КонецПроцедуры \ No newline at end of file diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Config.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Config.os" new file mode 100644 index 0000000..faf38b3 --- /dev/null +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Config.os" @@ -0,0 +1,25 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////// +// Прикладной интерфейс + +Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт + + ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Задать пользовательские настройки"); + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-winCreateBashLauncher","Создавать sh-скрипт запуска для пакетов приложений в среде Windows"); + Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "-proxyusedefault","Использовать ПроксиПоУмолчанию (системные настройки)"); + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-proxyserver", "Адрес прокси"); + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-proxyport", "Порт прокси"); + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-proxyuser", "Пользователь прокси "); + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-proxypass", "Пароль прокси"); + Парсер.ДобавитьКоманду(ОписаниеКоманды); + +КонецПроцедуры + +// Выполняет логику команды +// +// Параметры: +// ПараметрыКоманды - Соответствие ключей командной строки и их значений +// +Функция ВыполнитьКоманду(Знач ПараметрыКоманды) Экспорт + НастройкиПриложенияOpm.СохранитьНастройки(ПараметрыКоманды); + Возврат 0; +КонецФункции \ No newline at end of file diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Install.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Install.os" new file mode 100644 index 0000000..d327ceb --- /dev/null +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Install.os" @@ -0,0 +1,45 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////// +// Прикладной интерфейс + +Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт + + ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Выполнить установку. Если указано имя пакета, происходит установка из хаба или из файла. В обратном случае устанавливаются зависимости текущего пакета по файлу packagedef."); + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-all", "Установить все пакеты, зарегистрированные в хабе"); + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-f", "Указать файл из которого нужно установить пакет"); + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-l", "Установить пакеты в локальный каталог oscript_modules"); + Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "ИмяПакета", "Имя пакета в хабе. Чтобы установить конкретную версию, используйте ИмяПакета@ВерсияПакета"); + Парсер.ДобавитьКоманду(ОписаниеКоманды); + +КонецПроцедуры + +// Выполняет логику команды +// +// Параметры: +// ПараметрыКоманды - Соответствие ключей командной строки и их значений +// +Функция ВыполнитьКоманду(Знач ПараметрыКоманды) Экспорт + УстановитьПакет(ПараметрыКоманды); + Возврат 0; +КонецФункции + +Процедура УстановитьПакет(Знач ЗначенияПараметров) Экспорт + + Установщик = Новый УстановкаПакета; + + Если ЗначенияПараметров["-l"] Тогда + Установщик.УстановитьРежимУстановкиПакетов(РежимУстановкиПакетов.Локально); + Иначе + Установщик.УстановитьРежимУстановкиПакетов(РежимУстановкиПакетов.Глобально); + КонецЕсли; + + Если ЗначенияПараметров["-all"] Тогда + Установщик.УстановитьВсеПакетыИзОблака(); + ИначеЕсли ЗначенияПараметров["-f"] = Неопределено И ЗначенияПараметров["ИмяПакета"] = Неопределено Тогда + Установщик.УстановитьПакетыПоОписаниюПакета(); + ИначеЕсли ЗначенияПараметров["-f"] <> Неопределено Тогда + Установщик.УстановитьПакетИзАрхива(ЗначенияПараметров["-f"]); + Иначе + Установщик.УстановитьПакетИзОблака(ЗначенияПараметров["ИмяПакета"]); + КонецЕсли; + +КонецПроцедуры diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_List.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_List.os" new file mode 100644 index 0000000..b67c8a8 --- /dev/null +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_List.os" @@ -0,0 +1,56 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////// +// Прикладной интерфейс + +Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт + + ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Вывести список пакетов"); + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-q", """Тихий"" режим вывода без лишних сообщений."); + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-remote", "Вывести список пакетов в хабе"); + Парсер.ДобавитьКоманду(ОписаниеКоманды); + +КонецПроцедуры + +// Выполняет логику команды +// +// Параметры: +// ПараметрыКоманды - Соответствие ключей командной строки и их значений +// +Функция ВыполнитьКоманду(Знач ПараметрыКоманды) Экспорт + + ВывестиСписокПакетов(ПараметрыКоманды); + Возврат 0; + +КонецФункции + + +Процедура ВывестиСписокПакетов(Знач ЗначенияПараметров) + + ТихийРежим = ЗначенияПараметров["-q"]; + + Если ЗначенияПараметров["-remote"] Тогда + ТекстСообщения = СтрШаблон("Пакеты в хабе:"); + КэшПакетовВХабе = Новый КэшПакетовХаба(); + УстановленныеПакеты = КэшПакетовВХабе.ПолучитьПакетыХаба(); + Иначе + + ПутьККаталогуПакетов = ПолучитьЗначениеСистемнойНастройки("lib.system"); + ТекстСообщения = СтрШаблон("Пакеты в системном каталоге библиотек <%1>:", ПутьККаталогуПакетов); + + КэшУстановленныхПакетов = Новый КэшУстановленныхПакетов(); + УстановленныеПакеты = КэшУстановленныхПакетов.ПолучитьУстановленныеПакеты(); + КонецЕсли; + + Если НЕ ТихийРежим Тогда + Сообщить(ТекстСообщения); + КонецЕсли; + + Для Каждого УстановленныйПакет Из УстановленныеПакеты Цикл + СтрокаСообщения = УстановленныйПакет.Ключ; + Если ТипЗнч(УстановленныйПакет.Значение) = Тип("ОписаниеПакета") Тогда + ОписаниеПакета = УстановленныйПакет.Значение; + СтрокаСообщения = СтрокаСообщения + "@" + ОписаниеПакета.Свойства().Версия; + КонецЕсли; + Сообщить(СтрокаСообщения); + КонецЦикла; + +КонецПроцедуры \ No newline at end of file diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Prepare.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Prepare.os" new file mode 100644 index 0000000..401d7c6 --- /dev/null +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Prepare.os" @@ -0,0 +1,27 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////// +// Прикладной интерфейс + +Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт + + ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Подготовить новый каталог разрабатываемого пакета"); + Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "КаталогСборкиПакета", "Каталог, в котором будет вестись разработка"); + Парсер.ДобавитьКоманду(ОписаниеКоманды); + +КонецПроцедуры + +// Выполняет логику команды +// +// Параметры: +// ПараметрыКоманды - Соответствие ключей командной строки и их значений +// +Функция ВыполнитьКоманду(Знач ПараметрыКоманды) Экспорт + ПодготовитьКаталогПроекта(ПараметрыКоманды["КаталогСборкиПакета"]); + Возврат 0; +КонецФункции + +Процедура ПодготовитьКаталогПроекта(Знач ВыходнойКаталог) Экспорт + + Сборщик = Новый СборщикПакета(); + Сборщик.ПодготовитьКаталогПроекта(ВыходнойКаталог); + +КонецПроцедуры diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Run.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Run.os" new file mode 100644 index 0000000..701f574 --- /dev/null +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Run.os" @@ -0,0 +1,28 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////// +// Прикладной интерфейс + +Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт + + ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Выполнить произвольную задачу"); + Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "ИмяЗадачи", "Имя выполняемой задачи."); + Парсер.ДобавитьПараметрКоллекцияКоманды(ОписаниеКоманды, "ПараметрыЗадачи", "Коллекция параметров, передаваемых задаче"); + Парсер.ДобавитьКоманду(ОписаниеКоманды); + +КонецПроцедуры + +// Выполняет логику команды +// +// Параметры: +// ПараметрыКоманды - Соответствие ключей командной строки и их значений +// +Функция ВыполнитьКоманду(Знач ПараметрыКоманды) Экспорт + ВыполнитьЗадачу(ПараметрыКоманды["ИмяЗадачи"], ПараметрыКоманды["ПараметрыЗадачи"]); + Возврат 0; +КонецФункции + +Процедура ВыполнитьЗадачу(Знач ИмяЗадачи, Знач ПараметрыЗадачи) + + ИсполнительЗадач = Новый ИсполнительЗадач(); + ИсполнительЗадач.ВыполнитьЗадачу(ИмяЗадачи, ПараметрыЗадачи); + +КонецПроцедуры \ No newline at end of file diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Test.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Test.os" new file mode 100644 index 0000000..bf38e9a --- /dev/null +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Test.os" @@ -0,0 +1,29 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////// +// Прикладной интерфейс + +Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт + + ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Выполнить тестирование проекта"); + Парсер.ДобавитьПараметрКоллекцияКоманды(ОписаниеКоманды, "ПараметрыЗадачи", "Коллекция параметров, передаваемых задаче тестирования"); + Парсер.ДобавитьКоманду(ОписаниеКоманды); + +КонецПроцедуры + +// Выполняет логику команды +// +// Параметры: +// ПараметрыКоманды - Соответствие ключей командной строки и их значений +// +Функция ВыполнитьКоманду(Знач ПараметрыКоманды) Экспорт + + ВыполнитьЗадачу("test", ПараметрыКоманды["ПараметрыЗадачи"]); + Возврат 0; + +КонецФункции + +Процедура ВыполнитьЗадачу(Знач ИмяЗадачи, Знач ПараметрыЗадачи) + + ИсполнительЗадач = Новый ИсполнительЗадач(); + ИсполнительЗадач.ВыполнитьЗадачу(ИмяЗадачи, ПараметрыЗадачи); + +КонецПроцедуры \ No newline at end of file diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Update.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Update.os" new file mode 100644 index 0000000..3053bd0 --- /dev/null +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Update.os" @@ -0,0 +1,37 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////// +// Прикладной интерфейс + +Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт + + ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Обновить пакет"); + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-all", "Обновить все установленные пакеты"); + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-f", "Указать файл из которого нужно установить пакет"); + Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "ИмяПакета", "Имя пакета в хабе. Чтобы установить конкретную версию, используйте ИмяПакета@ВерсияПакета"); + Парсер.ДобавитьКоманду(ОписаниеКоманды); + +КонецПроцедуры + +// Выполняет логику команды +// +// Параметры: +// ПараметрыКоманды - Соответствие ключей командной строки и их значений +// +Функция ВыполнитьКоманду(Знач ПараметрыКоманды) Экспорт + + ОбновитьПакет(ПараметрыКоманды); + Возврат 0; + +КонецФункции + +Процедура ОбновитьПакет(Знач ЗначенияПараметров) Экспорт + + Установщик = Новый УстановкаПакета; + Если ЗначенияПараметров["-all"] Тогда + Установщик.ОбновитьУстановленныеПакеты(); + ИначеЕсли ЗначенияПараметров["-f"] <> Неопределено Тогда + Установщик.УстановитьПакетИзАрхива(ЗначенияПараметров["-f"]); + Иначе + Установщик.ОбновитьПакетИзОблака(ЗначенияПараметров["ИмяПакета"]); + КонецЕсли; + +КонецПроцедуры \ No newline at end of file diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Version.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Version.os" new file mode 100644 index 0000000..876a9bd --- /dev/null +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Version.os" @@ -0,0 +1,19 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////// +// Прикладной интерфейс + +Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт + + ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Вывести версию продукта"); + Парсер.ДобавитьКоманду(ОписаниеКоманды); + +КонецПроцедуры + +// Выполняет логику команды +// +// Параметры: +// ПараметрыКоманды - Соответствие ключей командной строки и их значений +// +Функция ВыполнитьКоманду(Знач ПараметрыКоманды) Экспорт + Сообщить(КонстантыOpm.ВерсияПродукта); + Возврат 0; +КонецФункции \ No newline at end of file diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\277\321\200\320\260\320\262\320\272\320\260\320\237\320\276\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\260\320\274.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\277\321\200\320\260\320\262\320\272\320\260\320\237\320\276\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\260\320\274.os" new file mode 100644 index 0000000..83e699a --- /dev/null +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\277\321\200\320\260\320\262\320\272\320\260\320\237\320\276\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\260\320\274.os" @@ -0,0 +1,74 @@ + +/////////////////////////////////////////////////////////////////////////////////////////////////// +// Прикладной интерфейс + +Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт + ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Вывод справки по параметрам"); + Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "Команда"); + Парсер.ДобавитьКоманду(ОписаниеКоманды); +КонецПроцедуры + +Функция ВыполнитьКоманду(Знач ПараметрыКоманды) Экспорт + + Парсер = Новый ПарсерАргументовКоманднойСтроки; + + МенеджерКомандПриложенияOpm.ЗарегистрироватьКоманды(Парсер); + + Если ПараметрыКоманды["Команда"] = Неопределено Тогда + ПоказатьВозможныеКоманды(Парсер); + Иначе + ПоказатьСправкуПоКоманде(Парсер, ПараметрыКоманды["Команда"]); + КонецЕсли; + + Возврат 0; + +КонецФункции + +Процедура ПоказатьВозможныеКоманды(Знач Парсер) + + ВозможныеКоманды = Парсер.СправкаВозможныеКоманды(); + Сообщить("Возможные команды:"); + + МаксШирина = 0; + Поле = " "; + Для Каждого Команда Из ВозможныеКоманды Цикл + ТекШирина = СтрДлина(Команда.Команда); + Если ТекШирина > МаксШирина Тогда + МаксШирина = ТекШирина; + КонецЕсли; + КонецЦикла; + + Для Каждого Команда Из ВозможныеКоманды Цикл + Сообщить(" " + Лев(Команда.Команда + Поле, МаксШирина + 2) + "- " + Команда.Пояснение); + КонецЦикла; + + Сообщить("Для подсказки по конкретной команде наберите help <команда>"); + +КонецПроцедуры + +Процедура ПоказатьСправкуПоКоманде(Знач Парсер, Знач ИмяКоманды) + + ВозможныеКоманды = Парсер.СправкаВозможныеКоманды(); + ОписаниеКоманды = ВозможныеКоманды.Найти(ИмяКоманды, "Команда"); + Если ОписаниеКоманды = Неопределено Тогда + Сообщить("Команда отсуствует: " + ИмяКоманды); + Возврат; + КонецЕсли; + + Сообщить("" + ОписаниеКоманды.Команда + " - " + ОписаниеКоманды.Пояснение); + ВывестиПараметры(ОписаниеКоманды.Параметры); + +КонецПроцедуры + +Процедура ВывестиПараметры(Знач ОписаниеПараметров) + + Сообщить("Параметры:"); + Для Каждого СтрПараметр Из ОписаниеПараметров Цикл + Если Не СтрПараметр.ЭтоИменованныйПараметр Тогда + Сообщить(СтрШаблон(" <%1> - %2", СтрПараметр.Имя, СтрПараметр.Пояснение)); + Иначе + Сообщить(СтрШаблон(" %1 - %2", СтрПараметр.Имя, СтрПараметр.Пояснение)); + КонецЕсли; + КонецЦикла; + +КонецПроцедуры \ No newline at end of file diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\321\215\321\210\320\237\320\260\320\272\320\265\321\202\320\276\320\262\320\245\320\260\320\261\320\260.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\321\215\321\210\320\237\320\260\320\272\320\265\321\202\320\276\320\262\320\245\320\260\320\261\320\260.os" index 31a2500..d003f27 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\321\215\321\210\320\237\320\260\320\272\320\265\321\202\320\276\320\262\320\245\320\260\320\261\320\260.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\321\215\321\210\320\237\320\260\320\272\320\265\321\202\320\276\320\262\320\245\320\260\320\261\320\260.os" @@ -8,15 +8,10 @@ Процедура Обновить() Экспорт УстановкаПакета = Новый Установкапакета(); - Сервер = Константы.СерверУдаленногоХранилища; - Соединение = УстановкаПакета.ИнициализироватьСоединение(Сервер); - Ресурс = Константы.ПутьВХранилище + "list.txt"; - Запрос = Новый HTTPЗапрос(Ресурс); - Ответ = Соединение.Получить(Запрос); - - Если НЕ Ответ.КодСостояния = 200 Тогда - ТекстИсключения = СтрШаблон("Ошибка подключения к хабу <%1>", Ответ.КодСостояния); - Ответ.Закрыть(); + Ответ = Зеркала.ПолучитьРесурс("list.txt"); + + Если Ответ = Неопределено Тогда + ТекстИсключения = СтрШаблон("Ошибка подключения"); ВызватьИсключение ТекстИсключения; КонецЕсли; @@ -48,7 +43,6 @@ Процедура Инициализация() Лог = Логирование.ПолучитьЛог("oscript.app.opm"); - //Лог.УстановитьУровень(УровниЛога.Отладка); Обновить(); diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\321\215\321\210\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\275\321\213\321\205\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\321\215\321\210\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\275\321\213\321\205\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" index 0f4978f..0798af8 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\321\215\321\210\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\275\321\213\321\205\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\321\215\321\210\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\273\320\265\320\275\320\275\321\213\321\205\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" @@ -3,17 +3,23 @@ Перем Лог; +// Массив каталогов в порядке возрастания приоритета +Перем МассивКаталоговПоискаБиблиотек; + Перем УстановленныеПакеты; Функция ПакетУстановлен(Знач ОписаниеЗависимости) Экспорт + Перем УстановленныеПакеты; + УстановленныеПакеты = ПолучитьУстановленныеПакеты(); + ПакетУстановлен = УстановленныеПакеты.Получить(ОписаниеЗависимости.ИмяПакета) <> Неопределено; КаталогБиблиотек = ОбъединитьПути(КаталогПрограммы(), ПолучитьЗначениеСистемнойНастройки("lib.system")); ПутьКФайлуМетаданных = ОбъединитьПути( КаталогБиблиотек, ОписаниеЗависимости.ИмяПакета, - Константы.ИмяФайлаМетаданныхПакета + КонстантыOpm.ИмяФайлаМетаданныхПакета ); ФайлМетаданных = Новый Файл(ПутьКФайлуМетаданных); Если ФайлМетаданных.Существует() Тогда @@ -26,43 +32,68 @@ Лог.Отладка("ПакетУстановлен: Перед вызовом СравнитьВерсии(ЭтаВерсия = <%1>, БольшеЧемВерсия = <%2>)", УстановленнаяВерсия, ОписаниеЗависимости.МинимальнаяВерсия); УстановленаКорректнаяВерсия = ОписаниеЗависимости.МинимальнаяВерсия = Неопределено - ИЛИ РаботаСВерсиями.СравнитьВерсии(УстановленнаяВерсия, ОписаниеЗависимости.МинимальнаяВерсия) = 1; - + ИЛИ РаботаСВерсиями.СравнитьВерсии(УстановленнаяВерсия, ОписаниеЗависимости.МинимальнаяВерсия) >= 0; + Лог.Отладка("Установлена корректная версия: " + УстановленаКорректнаяВерсия); Возврат ПакетУстановлен И УстановленаКорректнаяВерсия; КонецФункции Процедура Обновить() Экспорт - КаталогБиблиотек = ОбъединитьПути(КаталогПрограммы(), ПолучитьЗначениеСистемнойНастройки("lib.system")); - Лог.Отладка("КаталогБиблиотек " + КаталогБиблиотек); - УстановленныеПакеты = Новый Соответствие; - - НайденныеФайлы = НайтиФайлы(КаталогБиблиотек, ПолучитьМаскуВсеФайлы()); - Для Каждого ФайлКаталога Из НайденныеФайлы Цикл - Если ФайлКаталога.ЭтоКаталог() Тогда - ДобавитьУстановленныйПакет(ФайлКаталога); - КонецЕсли; + Для Каждого КаталогБиблиотек Из МассивКаталоговПоискаБиблиотек Цикл + + Лог.Отладка("КаталогБиблиотек " + КаталогБиблиотек); + УстановленныеПакеты = Новый Соответствие; + + НайденныеФайлы = НайтиФайлы(КаталогБиблиотек, ПолучитьМаскуВсеФайлы()); + Для Каждого ФайлКаталога Из НайденныеФайлы Цикл + Если ФайлКаталога.ЭтоКаталог() Тогда + + // ДобавитьУстановленныйПакет заменит уже добавленный пакет при совпадении имён + // Соответственно, более поздние каталоги будут иметь приоритет + ДобавитьУстановленныйПакет(ФайлКаталога); + + КонецЕсли; + КонецЦикла; + КонецЦикла; КонецПроцедуры Функция ПолучитьУстановленныеПакеты() Экспорт + + Если УстановленныеПакеты = Неопределено Тогда + Обновить(); + КонецЕсли; + Возврат УстановленныеПакеты; + КонецФункции Процедура Инициализация() Лог = Логирование.ПолучитьЛог("oscript.app.opm"); - //Лог.УстановитьУровень(УровниЛога.Отладка); - - Обновить(); + МассивКаталоговПоискаБиблиотек = Новый Массив; + + КаталогСистемныхБиблиотек = ОбъединитьПути( + КаталогПрограммы(), + ПолучитьЗначениеСистемнойНастройки("lib.system") + ); + + МассивКаталоговПоискаБиблиотек.Добавить(КаталогСистемныхБиблиотек); КонецПроцедуры +// Добавляет каталог в список, по которому выполняется поиск библиотек +Процедура ДобавитьКаталогБиблиотек(Знач Каталог) Экспорт + + МассивКаталоговПоискаБиблиотек.Добавить(Каталог); + +КонецПроцедуры + Процедура ДобавитьУстановленныйПакет(Знач ФайлКаталога) - ПутьКФайлуМетаданных = ОбъединитьПути(ФайлКаталога.ПолноеИмя, Константы.ИмяФайлаМетаданныхПакета); + ПутьКФайлуМетаданных = ОбъединитьПути(ФайлКаталога.ПолноеИмя, КонстантыOpm.ИмяФайлаМетаданныхПакета); ФайлМетаданных = Новый Файл(ПутьКФайлуМетаданных); Если ФайлМетаданных.Существует() Тогда МетаОписаниеПакета = ПрочитатьМетаданныеПакета(ПутьКФайлуМетаданных); diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\261\320\276\321\200\321\211\320\270\320\272\320\237\320\260\320\272\320\265\321\202\320\260.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\261\320\276\321\200\321\211\320\270\320\272\320\237\320\260\320\272\320\265\321\202\320\260.os" index 14e538f..5737d65 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\261\320\276\321\200\321\211\320\270\320\272\320\237\320\260\320\272\320\265\321\202\320\260.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\261\320\276\321\200\321\211\320\270\320\272\320\237\320\260\320\272\320\265\321\202\320\260.os" @@ -53,7 +53,7 @@ Если ФайлМанифеста = Неопределено Тогда - ФайлОбъект = Новый Файл(Константы.ИмяФайлаСпецификацииПакета); + ФайлОбъект = Новый Файл(КонстантыOpm.ИмяФайлаСпецификацииПакета); Если ФайлОбъект.Существует() и ФайлОбъект.ЭтоФайл() Тогда Лог.Информация("Найден файл манифеста"); ФайлМанифеста = ФайлОбъект.ПолноеИмя; @@ -223,7 +223,7 @@ Лог.Информация("Создаю заготовку скрипта установки/удаления"); - ИмяФайла = ОбъединитьПути(Каталог, Константы.ИмяФайлаСкриптаУстановки); + ИмяФайла = ОбъединитьПути(Каталог, КонстантыOpm.ИмяФайлаСкриптаУстановки); ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла); ЗаписьТекста.ЗаписатьСтроку("///////////////////////////////////////////////////////////////////"); ЗаписьТекста.ЗаписатьСтроку("// Сценарий установки и удаления пакета с клиентской машины "); @@ -269,7 +269,7 @@ Лог.Информация("Создаю заготовку описания пакета"); - ЗаписьТекста = Новый ЗаписьТекста(ОбъединитьПути(Каталог, Константы.ИмяФайлаСпецификацииПакета)); + ЗаписьТекста = Новый ЗаписьТекста(ОбъединитьПути(Каталог, КонстантыOpm.ИмяФайлаСпецификацииПакета)); ЗаписьТекста.ЗаписатьСтроку("////////////////////////////////////////////////////////////"); ЗаписьТекста.ЗаписатьСтроку("// Описание пакета для сборки и установки"); @@ -286,7 +286,7 @@ | .ВключитьФайл(""src"") | .ВключитьФайл(""doc"") | .ВключитьФайл(""tests"") - | .ВключитьФайл("""+Константы.ИмяФайлаСкриптаУстановки+""") + | .ВключитьФайл("""+КонстантыOpm.ИмяФайлаСкриптаУстановки+""") | //.ЗависитОт(""package1"", "">=2.0"") | //.ЗависитОт(""package2"", "">=1.1"", ""<2.0"") | //.ОпределяетКласс(""УправлениеВселенной"", ""src/universe-mngr.os"") @@ -297,4 +297,4 @@ КонецПроцедуры -Лог = Логирование.ПолучитьЛог(Константы.ИмяЛога); +Лог = Логирование.ПолучитьЛог(КонстантыOpm.ИмяЛога); diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260\320\237\320\260\320\272\320\265\321\202\320\260.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260\320\237\320\260\320\272\320\265\321\202\320\260.os" index 946058d..4e6b208 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260\320\237\320\260\320\272\320\265\321\202\320\260.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260\320\237\320\260\320\272\320\265\321\202\320\260.os" @@ -7,6 +7,7 @@ Перем мЗависимостиВРаботе; Перем ЭтоWindows; Перем мРежимУстановкиПакетов; +Перем КэшУстановленныхПакетов; Процедура УстановитьПакетИзАрхива(Знач ФайлАрхива) Экспорт @@ -24,8 +25,8 @@ ЧтениеПакета = Новый ЧтениеZipФайла; ЧтениеПакета.Открыть(ФайлАрхива); - ФайлСодержимого = ИзвлечьОбязательныйФайл(ЧтениеПакета, Константы.ИмяФайлаСодержимогоПакета); - ФайлМетаданных = ИзвлечьОбязательныйФайл(ЧтениеПакета, Константы.ИмяФайлаМетаданныхПакета); + ФайлСодержимого = ИзвлечьОбязательныйФайл(ЧтениеПакета, КонстантыOpm.ИмяФайлаСодержимогоПакета); + ФайлМетаданных = ИзвлечьОбязательныйФайл(ЧтениеПакета, КонстантыOpm.ИмяФайлаМетаданныхПакета); Метаданные = ПрочитатьМетаданныеПакета(ФайлМетаданных); ИмяПакета = Метаданные.Свойства().Имя; @@ -137,7 +138,7 @@ КонецПроцедуры Процедура ОбновитьУстановленныеПакеты() Экспорт - КэшУстановленныхПакетов = Новый КэшУстановленныхПакетов; + КэшУстановленныхПакетов = ПолучитьУстановленныеПакеты(); УстановленныеПакеты = КэшУстановленныхПакетов.ПолучитьУстановленныеПакеты(); Для Каждого КлючИЗначение Из УстановленныеПакеты Цикл ОбновитьПакетИзОблака(КлючИЗначение.Ключ); @@ -151,7 +152,7 @@ Функция НайтиСоздатьКаталогУстановки(Знач ИдентификаторПакета) Если мРежимУстановкиПакетов = РежимУстановкиПакетов.Локально Тогда - КаталогБиблиотек = Константы.ЛокальныйКаталогУстановкиПакетов; + КаталогБиблиотек = КонстантыOpm.ЛокальныйКаталогУстановкиПакетов; ИначеЕсли мРежимУстановкиПакетов = РежимУстановкиПакетов.Глобально Тогда КаталогБиблиотек = КаталогСистемныхБиблиотек(); Иначе @@ -197,7 +198,26 @@ КонецПроцедуры Функция ПолучитьУстановленныеПакеты() - Возврат Новый КэшУстановленныхПакетов(); + + Если КэшУстановленныхПакетов = Неопределено Тогда + + КэшУстановленныхПакетов = Новый КэшУстановленныхПакетов(); + + Если мРежимУстановкиПакетов = РежимУстановкиПакетов.Локально Тогда + + ПутьККаталогуЛокальнойУстановки = ОбъединитьПути( + ТекущийКаталог(), + КонстантыOpm.ЛокальныйКаталогУстановкиПакетов + ); + + КэшУстановленныхПакетов.ДобавитьКаталогБиблиотек(ПутьККаталогуЛокальнойУстановки); + + КонецЕсли; + + КонецЕсли; + + Возврат КэшУстановленныхПакетов; + КонецФункции Процедура СкачатьИУстановитьПакетПоОписанию(Знач ОписаниеПакета) @@ -205,23 +225,54 @@ СкачатьИУстановитьПакет(ОписаниеПакета.ИмяПакета, ОписаниеПакета.МинимальнаяВерсия); КонецПроцедуры +// Функция по имени пакета определяет имя архива в хабе +// https://github.com/oscript-library/opm/issues/50 +// Имена файлов в хабе регистрозависимы, однако имена пакетов по обыкновению регистронезависимы +Функция ОпределитьИмяАрхива(Знач ИмяПакета) + + КэшПакетовВХабе = Новый КэшПакетовХаба(); + ПакетыХаба = КэшПакетовВХабе.ПолучитьПакетыХаба(); + + Если ПакетыХаба.Получить(ИмяПакета) = Неопределено Тогда + + Для Каждого мПакет Из ПакетыХаба Цикл + + // Проводим регистронезависимое сравнение имён + Если нрег(мПакет.Ключ) = нрег(ИмяПакета) Тогда + + // и возвращаем ровно то имя, которое хранится в хабе (с учётом регистра) + Возврат мПакет.Ключ; + + КонецЕсли; + + КонецЦикла; + + Возврат Неопределено; + + КонецЕсли; + + Возврат ИмяПакета; + +КонецФункции + Процедура СкачатьИУстановитьПакет(Знач ИмяПакета, Знач ВерсияПакета) + ИмяАрхива = ОпределитьИмяАрхива(ИмяПакета); + Если ИмяАрхива = Неопределено Тогда + ТекстИсключения = СтрШаблон("Ошибка установки пакета %1: Пакет не найден", ИмяПакета); + ВызватьИсключение ТекстИсключения; + КонецЕсли; + Если ВерсияПакета <> Неопределено Тогда - ФайлПакета = ИмяПакета + "-" + ВерсияПакета + ".ospx"; + ФайлПакета = ИмяАрхива + "-" + ВерсияПакета + ".ospx"; Иначе - ФайлПакета = ИмяПакета + ".ospx"; + ФайлПакета = ИмяАрхива + ".ospx"; КонецЕсли; - Сервер = Константы.СерверУдаленногоХранилища; - Ресурс = Константы.ПутьВХранилище + ИмяПакета + "/" + ФайлПакета; - Соединение = ИнициализироватьСоединение(Сервер); - - Запрос = Новый HTTPЗапрос(Ресурс); Лог.Информация("Скачиваю файл: " + ФайлПакета); - Ответ = Соединение.Получить(Запрос); - Если Ответ.КодСостояния = 200 Тогда + Ответ = Зеркала.ПолучитьРесурс(ИмяАрхива + "/" + ФайлПакета); + Если Не Ответ = Неопределено Тогда Лог.Отладка("Файл получен"); ВремФайл = ОбъединитьПути(КаталогВременныхФайлов(), ФайлПакета); Ответ.ПолучитьТелоКакДвоичныеДанные().Записать(ВремФайл); @@ -235,8 +286,7 @@ ВызватьИсключение; КонецПопытки; Иначе - ТекстИсключения = СтрШаблон("Ошибка установки пакета %1 <%2>", ИмяПакета, Ответ.КодСостояния); - Ответ.Закрыть(); + ТекстИсключения = СтрШаблон("Ошибка установки пакета %1: Нет соединения", ИмяПакета); ВызватьИсключение ТекстИсключения; КонецЕсли; @@ -244,7 +294,7 @@ Функция ИнициализироватьСоединение(Сервер) Экспорт - НастройкиПрокси = НастройкиПриложения.Получить().Прокси; + НастройкиПрокси = НастройкиПриложенияOpm.Получить().Прокси; Если НастройкиПрокси.ИспользоватьПрокси = Истина Тогда Прокси = Новый ИнтернетПрокси(НастройкиПрокси.ПроксиПоУмолчанию); Если НастройкиПрокси.ПроксиПоУмолчанию = Ложь Тогда @@ -307,7 +357,7 @@ ЧтениеСодержимого = Новый ЧтениеZipФайла(ФайлСодержимого); Попытка - ИмяСкриптаУстановки = Константы.ИмяФайлаСкриптаУстановки; + ИмяСкриптаУстановки = КонстантыOpm.ИмяФайлаСкриптаУстановки; ЭлементСкриптаУстановки = ЧтениеСодержимого.Элементы.Найти(ИмяСкриптаУстановки); Если ЭлементСкриптаУстановки <> Неопределено Тогда Лог.Отладка("Найден скрипт установки пакета"); @@ -380,7 +430,7 @@ КонецЕсли; Если мРежимУстановкиПакетов = РежимУстановкиПакетов.Локально Тогда - КаталогУстановкиСкриптовЗапускаПриложений = ОбъединитьПути(Константы.ЛокальныйКаталогУстановкиПакетов, "bin"); + КаталогУстановкиСкриптовЗапускаПриложений = ОбъединитьПути(КонстантыOpm.ЛокальныйКаталогУстановкиПакетов, "bin"); ФС.ОбеспечитьКаталог(КаталогУстановкиСкриптовЗапускаПриложений); КаталогУстановкиСкриптовЗапускаПриложений = Новый Файл(КаталогУстановкиСкриптовЗапускаПриложений).ПолноеИмя; ИначеЕсли мРежимУстановкиПакетов = РежимУстановкиПакетов.Глобально Тогда @@ -404,7 +454,7 @@ ФайлЗапуска.Закрыть(); КонецЕсли; - Если (ЭтоWindows И НастройкиПриложения.Получить().СоздаватьShСкриптЗапуска) ИЛИ НЕ ЭтоWindows Тогда + Если (ЭтоWindows И НастройкиПриложенияOpm.Получить().СоздаватьShСкриптЗапуска) ИЛИ НЕ ЭтоWindows Тогда ПолныйПутьКСкриптуЗапуска = ОбъединитьПути(Каталог, ИмяСкриптаЗапуска); ФайлЗапуска = Новый ЗаписьТекста(ПолныйПутьКСкриптуЗапуска, КодировкаТекста.UTF8NoBOM,,, Символы.ПС); ФайлЗапуска.ЗаписатьСтроку("#!/bin/bash"); @@ -447,7 +497,7 @@ Процедура СохранитьФайлМетаданныхПакета(Знач КаталогУстановки, Знач ПутьКФайлуМетаданных) - ПутьСохранения = ОбъединитьПути(КаталогУстановки, Константы.ИмяФайлаМетаданныхПакета); + ПутьСохранения = ОбъединитьПути(КаталогУстановки, КонстантыOpm.ИмяФайлаМетаданныхПакета); ДанныеФайла = Новый ДвоичныеДанные(ПутьКФайлуМетаданных); ДанныеФайла.Записать(ПутьСохранения); diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\250\320\260\320\261\320\273\320\276\320\275\320\232\320\276\320\274\320\260\320\275\320\264\321\213.os-template" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\250\320\260\320\261\320\273\320\276\320\275\320\232\320\276\320\274\320\260\320\275\320\264\321\213.os-template" new file mode 100644 index 0000000..df26def --- /dev/null +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\250\320\260\320\261\320\273\320\276\320\275\320\232\320\276\320\274\320\260\320\275\320\264\321\213.os-template" @@ -0,0 +1,16 @@ + +/////////////////////////////////////////////////////////////////////////////////////////////////// +// Прикладной интерфейс + +Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт + +КонецПроцедуры + +// Выполняет логику команды +// +// Параметры: +// ПараметрыКоманды - Соответствие ключей командной строки и их значений +// +Функция ВыполнитьКоманду(Знач ПараметрыКоманды) Экспорт + ВызватьИсключение "Не реализовано" +КонецФункции \ No newline at end of file diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\227\320\265\321\200\320\272\320\260\320\273\320\260.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\227\320\265\321\200\320\272\320\260\320\273\320\260.os" new file mode 100644 index 0000000..4de6277 --- /dev/null +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\227\320\265\321\200\320\272\320\260\320\273\320\260.os" @@ -0,0 +1,96 @@ +#Использовать logos + +Перем ПодключенноеЗеркало; +Перем Зеркала; +Перем Лог; + +// ИмяРесурса - имя файла относительно "Сервер/ПутьВХранилище" +// Возвращает HttpОтвет или Неопределено, если ни один сервер не вернул ответ. +Функция ПолучитьРесурс(Знач ИмяРесурса) Экспорт + + РесурсУспешноПолучен = Ложь; + + Если ПодключенноеЗеркало = Неопределено Тогда + + Если Зеркала = Неопределено Тогда + Инициализация(); + КонецЕсли; + + Для Каждого мЗеркало Из Зеркала Цикл + + Ответ = мЗеркало.ПолучитьРесурс(ИмяРесурса); + Если Ответ = Неопределено Тогда + Продолжить; + КонецЕсли; + + Если Ответ.КодСостояния = 200 Тогда + + РесурсУспешноПолучен = Истина; + ПодключенноеЗеркало = мЗеркало; + Прервать; + + КонецЕсли; + + ТекстОшибки = СтрШаблон("Ошибка подключения к хабу %1 <%2>", + мЗеркало.СерверУдаленногоХранилища, + Ответ.КодСостояния); + + Ответ.Закрыть(); + + Лог.Информация(ТекстОшибки); + + КонецЦикла; + + Иначе + + Ответ = ПодключенноеЗеркало.ПолучитьРесурс(ИмяРесурса); + Если Ответ.КодСостояния = 200 Тогда + РесурсУспешноПолучен = Истина; + Иначе + + ТекстОшибки = СтрШаблон("Ошибка подключения к хабу %1 <%2>", + ПодключенноеЗеркало.СерверУдаленногоХранилища, + Ответ.КодСостояния); + + Ответ.Закрыть(); + Лог.Информация(ТекстОшибки); + + КонецЕсли; + + КонецЕсли; + + Если РесурсУспешноПолучен Тогда + + ТекстСообщения = СтрШаблон("Ресурс %1 успешно получен с %2", ИмяРесурса, ПодключенноеЗеркало.СерверУдаленногоХранилища); + Лог.Отладка(ТекстСообщения); + + Возврат Ответ; + + КонецЕсли; + + Возврат Неопределено; + +КонецФункции + +Процедура Добавить(Знач Зеркало) Экспорт + Зеркала.Добавить(Зеркало); +КонецПроцедуры + +Процедура Инициализация() + + Лог = Логирование.ПолучитьЛог("oscript.app.opm"); + + Зеркала = Новый Массив; + + ОсновноеЗеркало = Новый("Зеркало"); + ОсновноеЗеркало.СерверУдаленногоХранилища = КонстантыOpm.СерверУдаленногоХранилища; + ОсновноеЗеркало.ПутьВХранилище = КонстантыOpm.ПутьВХранилище; + + ЗапасноеЗеркало = Новый("Зеркало"); + ЗапасноеЗеркало.СерверУдаленногоХранилища = КонстантыOpm.СерверЗапасногоХранилища; + ЗапасноеЗеркало.ПутьВХранилище = КонстантыOpm.ПутьВЗапасномХранилище; + + Зеркала.Добавить(ОсновноеЗеркало); + Зеркала.Добавить(ЗапасноеЗеркало); + +КонецПроцедуры diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\275\321\201\321\202\320\260\320\275\321\202\321\213.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\275\321\201\321\202\320\260\320\275\321\202\321\213Opm.os" similarity index 79% rename from "src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\275\321\201\321\202\320\260\320\275\321\202\321\213.os" rename to "src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\275\321\201\321\202\320\260\320\275\321\202\321\213Opm.os" index 6662e8b..bdcfd4d 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\275\321\201\321\202\320\260\320\275\321\202\321\213.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\275\321\201\321\202\320\260\320\275\321\202\321\213Opm.os" @@ -5,6 +5,8 @@ Перем ИмяФайлаМетаданныхПакета Экспорт; Перем СерверУдаленногоХранилища Экспорт; Перем ПутьВХранилище Экспорт; +Перем СерверЗапасногоХранилища Экспорт; +Перем ПутьВЗапасномХранилище Экспорт; Перем ЛокальныйКаталогУстановкиПакетов Экспорт; Перем ИмяЛога Экспорт; Перем ВерсияПродукта Экспорт; @@ -17,6 +19,8 @@ ИмяФайлаМетаданныхПакета = "opm-metadata.xml"; СерверУдаленногоХранилища = "http://hub.oscript.io"; ПутьВХранилище = "/download/"; +СерверЗапасногоХранилища = "http://hub.oscript.ru"; +ПутьВЗапасномХранилище = "/download/"; ЛокальныйКаталогУстановкиПакетов = "oscript_modules"; ИмяЛога = "oscript.app.opm"; -ВерсияПродукта = "0.9.4"; +ВерсияПродукта = "0.9.5"; diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217Opm.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217Opm.os" new file mode 100644 index 0000000..61c8009 --- /dev/null +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217Opm.os" @@ -0,0 +1,50 @@ + +Перем мИсполнителиКоманд; +Перем мРегистраторКоманд; + +Процедура ЗарегистрироватьКоманды(Знач Парсер) Экспорт + + КомандыИРеализация = Новый Соответствие; + мРегистраторКоманд.ПриРегистрацииКомандПриложения(КомандыИРеализация); + + Для Каждого КлючИЗначение Из КомандыИРеализация Цикл + ДобавитьКоманду(КлючИЗначение.Ключ, КлючИЗначение.Значение, Парсер); + КонецЦикла; + +КонецПроцедуры + +Процедура РегистраторКоманд(Знач ОбъектРегистратор) Экспорт + мИсполнителиКоманд = Новый Соответствие; + мРегистраторКоманд = ОбъектРегистратор; +КонецПроцедуры + +Функция ПолучитьКоманду(Знач ИмяКоманды) Экспорт + + КлассРеализации = мИсполнителиКоманд[ИмяКоманды]; + Если КлассРеализации = Неопределено Тогда + ВызватьИсключение "Неверная операция. Команда '"+ИмяКоманды+"' не предусмотрена"; + КонецЕсли; + + Возврат КлассРеализации; + +КонецФункции + +Функция ВыполнитьКоманду(Знач ИмяКоманды, Знач ПараметрыКоманды) Экспорт + + Команда = ПолучитьКоманду(ИмяКоманды); + + Возврат Команда.ВыполнитьКоманду(ПараметрыКоманды); + +КонецФункции + +Процедура ДобавитьКоманду(Знач ИмяКоманды, Знач КлассРеализации, Знач Парсер) + + РеализацияКоманды = Новый(КлассРеализации); + РеализацияКоманды.ЗарегистрироватьКоманду(ИмяКоманды, Парсер); + мИсполнителиКоманд.Вставить(ИмяКоманды, РеализацияКоманды); + +КонецПроцедуры + +Процедура ПоказатьСправкуПоКомандам() Экспорт + ВыполнитьКоманду("help", Новый Соответствие); +КонецПроцедуры \ No newline at end of file diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217Opm.os" similarity index 100% rename from "src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" rename to "src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217Opm.os" diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\241\320\270\321\201\321\202\320\265\320\274\321\213Opm.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\241\320\270\321\201\321\202\320\265\320\274\321\213Opm.os" new file mode 100644 index 0000000..acc6fa1 --- /dev/null +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\241\320\270\321\201\321\202\320\265\320\274\321\213Opm.os" @@ -0,0 +1,29 @@ + +Функция ИмяЛогаСистемы() Экспорт + Возврат "oscript.app.opm"; +КонецФункции + +Процедура ПриРегистрацииКомандПриложения(Знач КлассыРеализацииКоманд) Экспорт + + КлассыРеализацииКоманд["help"] = "КомандаСправкаПоПараметрам"; + КлассыРеализацииКоманд["app"] = "КомандаOpm_App"; + КлассыРеализацииКоманд["build"] = "КомандаOpm_Build"; + КлассыРеализацииКоманд["config"] = "КомандаOpm_Config"; + КлассыРеализацииКоманд["install"] = "КомандаOpm_Install"; + КлассыРеализацииКоманд["list"] = "КомандаOpm_List"; + КлассыРеализацииКоманд["prepare"] = "КомандаOpm_Prepare"; + КлассыРеализацииКоманд["run"] = "КомандаOpm_Run"; + КлассыРеализацииКоманд["test"] = "КомандаOpm_Test"; + КлассыРеализацииКоманд["update"] = "КомандаOpm_Update"; + КлассыРеализацииКоманд["version"] = "КомандаOpm_Version"; + //... + //КлассыРеализацииКоманд["<имя команды>"] = "<КлассРеализации>"; + +КонецПроцедуры + +// Одна из команд может вызываться неявно, без указания команды. +// Иными словами, здесь указывается какой обработчик надо вызывать, если приложение запущено без какой-либо команды +// myapp /home/user/somefile.txt будет аналогично myapp default-action /home/user/somefile.txt +Функция ИмяКомандыПоУмолчанию() Экспорт + Возврат "version"; +КонецФункции \ No newline at end of file diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\222\320\265\321\200\321\201\320\270\321\217\320\274\320\270.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\222\320\265\321\200\321\201\320\270\321\217\320\274\320\270.os" index e7f36f9..61e5c9e 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\222\320\265\321\200\321\201\320\270\321\217\320\274\320\270.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\222\320\265\321\200\321\201\320\270\321\217\320\274\320\270.os" @@ -160,4 +160,4 @@ КонецФункции -Лог = Логирование.ПолучитьЛог(Константы.ИмяЛога); +Лог = Логирование.ПолучитьЛог(КонстантыOpm.ИмяЛога); diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\236\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\274\320\237\320\260\320\272\320\265\321\202\320\260.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\236\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\274\320\237\320\260\320\272\320\265\321\202\320\260.os" index 804a28d..e66dc66 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\236\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\274\320\237\320\260\320\272\320\265\321\202\320\260.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\236\320\277\320\270\321\201\320\260\320\275\320\270\320\265\320\274\320\237\320\260\320\272\320\265\321\202\320\260.os" @@ -2,7 +2,7 @@ Описание = Новый ОписаниеПакета(); - ПутьКМанифесту = ОбъединитьПути(ТекущийКаталог(), Константы.ИмяФайлаСпецификацииПакета); + ПутьКМанифесту = ОбъединитьПути(ТекущийКаталог(), КонстантыOpm.ИмяФайлаСпецификацииПакета); Файл_Манифест = Новый Файл(ПутьКМанифесту); Если Файл_Манифест.Существует() Тогда diff --git a/tasks/test.os b/tasks/test.os new file mode 100644 index 0000000..2881de7 --- /dev/null +++ b/tasks/test.os @@ -0,0 +1,22 @@ +#Использовать 1testrunner +#Использовать "../src" + +Процедура ПровестиТестирование() + + Тестер = Новый Тестер; + + КаталогПроекта = ОбъединитьПути(ТекущийСценарий().Каталог, ".."); + + ФайлРезультатовТестовПакета = Новый Файл(ОбъединитьПути(КаталогПроекта,"test-reports")); + Если Не ФайлРезультатовТестовПакета.Существует() Тогда + СоздатьКаталог(ФайлРезультатовТестовПакета.ПолноеИмя); + КонецЕслИ; + + КаталогТестов = Новый Файл(ОбъединитьПути(КаталогПроекта, "tests")); + + РезультатТестирования = Тестер.ТестироватьКаталог(КаталогТестов, ФайлРезультатовТестовПакета); + +КонецПроцедуры + + +ПровестиТестирование(); \ No newline at end of file diff --git a/tests/build-install-test.os b/tests/build-install-test.os index a21cde6..834d332 100644 --- a/tests/build-install-test.os +++ b/tests/build-install-test.os @@ -1,9 +1,7 @@ #Использовать asserts #Использовать fs #Использовать tempfiles - -#Использовать "../src" - +//#Использовать "../src/Модули" Перем юТест; Перем мВременныеФайлы; @@ -95,11 +93,11 @@ Установщик.УстановитьПакетИзАрхива(ФайлПакетаВерсии1.ПолноеИмя); ПутьКФайлуOsТестовогоПакета = ОбъединитьПути( - Константы.ЛокальныйКаталогУстановкиПакетов, "test","folder","src.os"); + КонстантыOpm.ЛокальныйКаталогУстановкиПакетов, "test","folder","src.os"); ФайлOsИзСтарогоПакета = Новый Файл(ПутьКФайлуOsТестовогоПакета); ПутьКФайлуDllТестовогоПакета = ОбъединитьПути( - Константы.ЛокальныйКаталогУстановкиПакетов, "test","folder","src.dll"); + КонстантыOpm.ЛокальныйКаталогУстановкиПакетов, "test","folder","src.dll"); ФайлDllИзСтарогоПакета = Новый Файл(ПутьКФайлуDllТестовогоПакета); Ожидаем.Что(ФайлOsИзСтарогоПакета.Существует(), "Файл src.os должен существовать").ЭтоИстина(); diff --git a/tests/mft-serializer-test.os b/tests/mft-serializer-test.os index a5b304a..c260562 100644 --- a/tests/mft-serializer-test.os +++ b/tests/mft-serializer-test.os @@ -1,7 +1,6 @@ #Использовать asserts - #Использовать logos -#Использовать "../src" + Перем юТест; diff --git a/tests/packagedef-test.os b/tests/packagedef-test.os index dab69f1..860ca18 100644 --- a/tests/packagedef-test.os +++ b/tests/packagedef-test.os @@ -1,5 +1,5 @@ #Использовать asserts -#Использовать "../src" + Перем юТест; diff --git a/tests/packagelist.os b/tests/packagelist.os index 950a55b..7480b9f 100644 --- a/tests/packagelist.os +++ b/tests/packagelist.os @@ -1,6 +1,5 @@  #Использовать asserts -#Использовать "../src" Перем юТест; diff --git a/tests/pkg-cache.os b/tests/pkg-cache.os index de3e6be..059b8af 100644 --- a/tests/pkg-cache.os +++ b/tests/pkg-cache.os @@ -1,7 +1,5 @@ #Использовать asserts -#Использовать "../src" - Перем юТест; Функция ПолучитьСписокТестов(Знач Тестирование) Экспорт diff --git a/tests/versions-test.os b/tests/versions-test.os index aef8042..fa18823 100644 --- a/tests/versions-test.os +++ b/tests/versions-test.os @@ -1,6 +1,5 @@  #Использовать asserts -#Использовать "../src" Перем юТест;