From 94ba8154c0a0697694559af9887f416d917b7807 Mon Sep 17 00:00:00 2001 From: Vladimir Nadulich Date: Sat, 31 Oct 2020 01:51:32 +0300 Subject: [PATCH 01/25] =?UTF-8?q?feat:=20=D0=9E=D0=BF=D1=80=D0=B5=D0=B4?= =?UTF-8?q?=D0=B5=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=A2=D0=B5=D0=BA=D1=83?= =?UTF-8?q?=D1=89=D0=B5=D0=B9=D0=92=D0=B5=D1=80=D1=81=D0=B8=D0=B8=20=D0=B8?= =?UTF-8?q?=D0=B7=20=D0=A1=D0=B8=D0=BC=D0=BB=D0=B8=D0=BD=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...1\200\321\201\320\270\320\270OneScript.os" | 59 +++++++++++++++---- 1 file changed, 46 insertions(+), 13 deletions(-) diff --git "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" index b3e5d87..2d40e5f 100644 --- "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" +++ "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" @@ -48,18 +48,12 @@ Если НЕ ВерсияУстановлена(ПроверяемаяВерсия) Тогда Возврат Ложь; КонецЕсли; - - ПутьКДвижкуТекущейВерсии = ПолучитьПутьКУстановленномуДвижкуOneScript("current"); - ПутьКДвижкуПроверяемойВерсии = ПолучитьПутьКУстановленномуДвижкуOneScript(ПроверяемаяВерсия); - ФайлДвижкаТекущейВерсии = Новый Файл(ПутьКДвижкуТекущейВерсии); - ФайлДвижкаПроверяемойВерсии = Новый Файл(ПутьКДвижкуПроверяемойВерсии); + ВерсииСимлинков = СимЛинки(); - ФайлыПроверяемойВерсииСовпадаетСТекущейВерсией = - ФайлДвижкаТекущейВерсии.ПолучитьВремяИзменения() = ФайлДвижкаПроверяемойВерсии.ПолучитьВремяИзменения() - И ФайлДвижкаТекущейВерсии.ПолучитьВремяСоздания() = ФайлДвижкаПроверяемойВерсии.ПолучитьВремяСоздания(); + ТекущаяВерсия = ВерсииСимлинков["current"]; - Возврат ФайлыПроверяемойВерсииСовпадаетСТекущейВерсией; + Возврат ПроверяемаяВерсия = ТекущаяВерсия; КонецФункции @@ -80,9 +74,7 @@ УстановленныеВерсии.Колонки.Добавить("Версия"); УстановленныеВерсии.Колонки.Добавить("ЭтоСимлинк"); - // TODO: определение симлинка на основании аттрибутов файла? - МассивИменСимлинков = Новый Массив; - МассивИменСимлинков.Добавить("current"); + ВерсииСимлинков = СимЛинки(); КаталогУстановки = ПараметрыOVM.КаталогУстановкиПоУмолчанию(); НайденныеФайлы = НайтиФайлы(КаталогУстановки, ПолучитьМаскуВсеФайлы()); @@ -95,7 +87,7 @@ СтрокаВерсии.Алиас = НайденныйФайл.Имя; СтрокаВерсии.Путь = НайденныйФайл.ПолноеИмя; СтрокаВерсии.Версия = ПолучитьТочнуюВерсиюOneScript(СтрокаВерсии.Алиас); - СтрокаВерсии.ЭтоСимлинк = МассивИменСимлинков.Найти(НайденныйФайл.Имя) <> Неопределено; + СтрокаВерсии.ЭтоСимлинк = ВерсииСимлинков.Получить(НайденныйФайл.Имя) <> Неопределено; КонецЦикла; @@ -103,6 +95,47 @@ КонецФункции +Функция СимЛинки() + + КаталогУстановки = ПараметрыOVM.КаталогУстановкиПоУмолчанию(); + + Команда = Новый Команда(); + + Если ЭтоWindows Тогда + Команда.УстановитьКоманду("dir"); + Иначе + Команда.УстановитьКоманду("ls"); + Команда.ДобавитьПараметр("-la"); + КонецЕсли; + Команда.ДобавитьПараметр(КаталогУстановки); + + Команда.Исполнить(); + + ВыводКоманды = Команда.ПолучитьВывод(); + + Если ЭтоWindows Тогда + Выражение = "(|)\s*(.+?)\s*\[(.+)\]"; + Иначе + Выражение = "l.+?(\d\d:\d\d)\s*(.+?)\s*->\s*(.+)"; + КонецЕсли; + + РВ = Новый РегулярноеВыражение(Выражение); + РВ.МногоСтрочный = Ложь; + Совпадения = РВ.НайтиСовпадения(ВыводКоманды); + + ВерсииСимлинков = Новый Соответствие; + РазделительПути = ПолучитьРазделительПути(); + + Для Каждого Совпадение Из Совпадения Цикл + Группы = Совпадение.Группы; + ЧастиПути = СтрРазделить(Группы[3].Значение, РазделительПути); + ВерсииСимлинков.Вставить(Группы[2].Значение, ЧастиПути[ЧастиПути.ВГраница()]); + КонецЦикла; + + Возврат ВерсииСимлинков; + +КонецФункции + // Получить информацию о версиях, доступных к установке // // Возвращаемое значение: From 38233f2e62b7e0bcfe75fa8d422429a26eab2cd0 Mon Sep 17 00:00:00 2001 From: Vladimir Nadulich Date: Thu, 19 Nov 2020 22:36:27 +0300 Subject: [PATCH 02/25] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D1=83=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2?= =?UTF-8?q?=D0=BA=D0=B0=20x64=20=D0=B4=D0=B8=D1=81=D1=82=D1=80=D0=B8=D0=B1?= =?UTF-8?q?=D1=83=D1=82=D0=B8=D0=B2=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...320\260\320\275\320\264\320\260Install.os" | 7 ++++- ...0\262\321\211\320\270\320\272OneScript.os" | 11 ++++++- ...274\320\265\321\202\321\200\321\213OVM.os" | 30 +++++++++++++++++++ 3 files changed, 46 insertions(+), 2 deletions(-) diff --git "a/src/cmd/\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\260Install.os" "b/src/cmd/\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\260Install.os" index 6edcfe6..ffce018 100644 --- "a/src/cmd/\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\260Install.os" +++ "b/src/cmd/\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\260Install.os" @@ -15,7 +15,12 @@ КомандаПриложения.Опция("clean c", Ложь, "Полностью очищать каталог установки (включая установленные библиотеки)") .ВОкружении("OVM_INSTALL_CLEAN"); - + + Если ПараметрыOVM.Это64БитнаяОперационнаяСистема() Тогда + КомандаПриложения.Опция("x86", Ложь, "Устанавливать 32-разрядный дистрибутив OneScript") + .ВОкружении("OVM_INSTALL_X86"); + КонецЕсли; + КомандаПриложения.Аргумент( "VERSION", , diff --git "a/src/core/\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\321\211\320\270\320\272OneScript.os" "b/src/core/\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\321\211\320\270\320\272OneScript.os" index a2402fd..2d81762 100644 --- "a/src/core/\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\321\211\320\270\320\272OneScript.os" +++ "b/src/core/\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\321\211\320\270\320\272OneScript.os" @@ -228,7 +228,16 @@ КонецЕсли; ИмяФайла = "zip"; - Ресурс = СтрШаблон("downloads/%1/%2", КаталогВерсии, ИмяФайла); + ЧастиПути = Новый Массив; + ЧастиПути.Добавить("downloads"); + ЧастиПути.Добавить(КаталогВерсии); + Если ПараметрыOVM.Это64битнаяОперационнаяСистема() + И НЕ ПараметрыOVM.Использовать32бита() Тогда + ЧастиПути.Добавить("x64"); + КонецЕсли; + ЧастиПути.Добавить(ИмяФайла); + + Ресурс = СтрСоединить(ЧастиПути, "/"); Возврат Ресурс; КонецФункции diff --git "a/src/core/\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\213OVM.os" "b/src/core/\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\213OVM.os" index 55fbdd7..aa6f7f2 100644 --- "a/src/core/\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\213OVM.os" +++ "b/src/core/\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\213OVM.os" @@ -43,6 +43,36 @@ Возврат АдресСайтаОСкрипт() + "/downloads"; КонецФункции +// Разрядность устанавливаемого дистрибутива OneScript +// (только для x64 систем) +// +// Возвращаемое значение: +// Булево - Использовать 32 разрядность +Функция Использовать32бита() Экспорт + + ЗначениеПеременнойСреды = ПолучитьПеременнуюСреды("OVM_INSTALL_X86"); + Если НЕ ЗначениеПеременнойСреды = Неопределено Тогда + Попытка + Возврат Булево(ЗначениеПеременнойСреды); + Исключение + Возврат Ложь; + КонецПопытки; + КонецЕсли; + + ЗначениеИзФайлаНастройки = ЗначениеНастройки("oscript.x86", Ложь); + + Возврат ЗначениеИзФайлаНастройки; + +КонецФункции + +// Разрядность текущей операционной системы +// +// Возвращаемое значение: +// Булево - это 64 битная операционна система +Функция Это64БитнаяОперационнаяСистема() Экспорт + Возврат СистемнаяИнформация.Это64БитнаяОперационнаяСистема; +КонецФункции + // Количество разрядов в номере версии. // В приложении используется версионирование вида 1.0.20 // From f09bf52adec013a7c53c38ee4cc81167eefc6c93 Mon Sep 17 00:00:00 2001 From: Vladimir Nadulich Date: Sat, 21 Nov 2020 00:44:48 +0300 Subject: [PATCH 03/25] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=B1=D1=80=D0=BE?= =?UTF-8?q?=D1=81=20=D0=BE=D0=BF=D1=86=D0=B8=D0=B8=20`=D1=8586`=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D1=8B=20`In?= =?UTF-8?q?stall`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...320\260\320\275\320\264\320\260Install.os" | 8 ++++- ...0\262\321\211\320\270\320\272OneScript.os" | 31 ++++++++++++++----- ...274\320\265\321\202\321\200\321\213OVM.os" | 22 ------------- 3 files changed, 30 insertions(+), 31 deletions(-) diff --git "a/src/cmd/\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\260Install.os" "b/src/cmd/\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\260Install.os" index ffce018..282b3f7 100644 --- "a/src/cmd/\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\260Install.os" +++ "b/src/cmd/\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\260Install.os" @@ -46,11 +46,17 @@ Если ЗначениеЗаполнено(АлиасВерсии) И МассивВерсийКУстановке.Количество() > 1 Тогда ВызватьИсключение "Опция <--name> может быть задана только при установке одной версии OneScript"; КонецЕсли; + + Если ПараметрыOVM.Это64БитнаяОперационнаяСистема() Тогда + ИспользоватьХ64 = НЕ КомандаПриложения.ЗначениеОпции("x86"); + Иначе + ИспользоватьХ64 = Ложь; + КонецЕсли; УстановщикOneScript = Новый УстановщикOneScript(); Для Каждого ВерсияКУстановке Из МассивВерсийКУстановке Цикл - УстановщикOneScript.УстановитьOneScript(ВерсияКУстановке, АлиасВерсии, ОчищатьКаталогУстановки); + УстановщикOneScript.УстановитьOneScript(ВерсияКУстановке, АлиасВерсии, ОчищатьКаталогУстановки, ИспользоватьХ64); КонецЦикла; Если МассивВерсийКУстановке.Количество() > 0 Тогда diff --git "a/src/core/\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\321\211\320\270\320\272OneScript.os" "b/src/core/\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\321\211\320\270\320\272OneScript.os" index 2d81762..fdbb289 100644 --- "a/src/core/\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\321\211\320\270\320\272OneScript.os" +++ "b/src/core/\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\321\211\320\270\320\272OneScript.os" @@ -2,6 +2,7 @@ #Использовать fs #Использовать tempfiles #Использовать logos +#Использовать strings Перем ЭтоWindows; Перем Лог; @@ -18,9 +19,14 @@ Процедура УстановитьOneScript( Знач ВерсияКУстановке, Знач АлиасВерсии = "", - Знач ОчищатьКаталогУстановки = Истина + Знач ОчищатьКаталогУстановки = Истина, + Знач ИспользоватьХ64 = Ложь ) Экспорт + Если ИспользоватьХ64 Тогда + ИспользоватьХ64 = ПроверитьВозможностьУстановкиX64(ВерсияКУстановке); + КонецЕсли; + Лог.Информация("Установка OneScript %1...", ВерсияКУстановке); Если НЕ ЗначениеЗаполнено(АлиасВерсии) Тогда @@ -42,7 +48,7 @@ Лог.Отладка("Каталог установки версии: %1", КаталогУстановкиВерсии); Попытка - ФайлУстановщика = СкачатьФайлУстановщика(ВерсияКУстановке); + ФайлУстановщика = СкачатьФайлУстановщика(ВерсияКУстановке, ИспользоватьХ64); УстановитьOneScriptИзZipАрхива(ФайлУстановщика, КаталогУстановкиВерсии); ДобавитьSHСкриптыПриНеобходимости(КаталогУстановкиВерсии); @@ -56,9 +62,9 @@ КонецПроцедуры -Функция СкачатьФайлУстановщика(Знач ВерсияКУстановке) +Функция СкачатьФайлУстановщика(Знач ВерсияКУстановке, Знач ИспользоватьХ64) - Лог.Информация("Скачиваю установщик версии %1...", ВерсияКУстановке); + Лог.Информация("Скачиваю установщик версии %1%2...", ВерсияКУстановке, ?(ИспользоватьХ64, "-x64", "")); ПутьКСохраняемомуФайлу = ВременныеФайлы.НовоеИмяФайла("zip"); @@ -103,7 +109,7 @@ Таймаут ); - Ресурс = ПолучитьПутьКСкачиваниюФайла(ВерсияКУстановке); + Ресурс = ПолучитьПутьКСкачиваниюФайла(ВерсияКУстановке, ИспользоватьХ64); Запрос = Новый HTTPЗапрос(Ресурс); Лог.Отладка("Сервер: %1. Ресурс: %2", Соединение.Сервер, Ресурс); @@ -215,7 +221,7 @@ КонецЕсли; КонецПроцедуры -Функция ПолучитьПутьКСкачиваниюФайла(Знач ВерсияКУстановке) +Функция ПолучитьПутьКСкачиваниюФайла(Знач ВерсияКУстановке, Знач ИспользоватьХ64) Если СтрРазделить(ВерсияКУстановке, ".").Количество() = ПараметрыOVM.КоличествоРазрядовВНомереВерсии() Тогда КаталогВерсии = СтрЗаменить(ВерсияКУстановке, ".", "_"); @@ -231,8 +237,7 @@ ЧастиПути = Новый Массив; ЧастиПути.Добавить("downloads"); ЧастиПути.Добавить(КаталогВерсии); - Если ПараметрыOVM.Это64битнаяОперационнаяСистема() - И НЕ ПараметрыOVM.Использовать32бита() Тогда + Если ИспользоватьХ64 Тогда ЧастиПути.Добавить("x64"); КонецЕсли; ЧастиПути.Добавить(ИмяФайла); @@ -242,6 +247,16 @@ КонецФункции +Функция ПроверитьВозможностьУстановкиX64(ВерсияКУстановке) + // Версия х64 доступна для версий 1.2.0 и выше + Если НРег(ВерсияКУстановке) = "stable" + Или НРег(ВерсияКУстановке) = "dev" Тогда + Возврат Истина; + Иначе + Возврат СтроковыеФункции.СравнитьВерсии(ВерсияКУстановке, "1.2.0") >= 0; + КонецЕсли; +КонецФункции + СистемнаяИнформация = Новый СистемнаяИнформация; ЭтоWindows = Найти(ВРег(СистемнаяИнформация.ВерсияОС), "WINDOWS") > 0; diff --git "a/src/core/\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\213OVM.os" "b/src/core/\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\213OVM.os" index aa6f7f2..62f3aad 100644 --- "a/src/core/\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\213OVM.os" +++ "b/src/core/\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\213OVM.os" @@ -43,28 +43,6 @@ Возврат АдресСайтаОСкрипт() + "/downloads"; КонецФункции -// Разрядность устанавливаемого дистрибутива OneScript -// (только для x64 систем) -// -// Возвращаемое значение: -// Булево - Использовать 32 разрядность -Функция Использовать32бита() Экспорт - - ЗначениеПеременнойСреды = ПолучитьПеременнуюСреды("OVM_INSTALL_X86"); - Если НЕ ЗначениеПеременнойСреды = Неопределено Тогда - Попытка - Возврат Булево(ЗначениеПеременнойСреды); - Исключение - Возврат Ложь; - КонецПопытки; - КонецЕсли; - - ЗначениеИзФайлаНастройки = ЗначениеНастройки("oscript.x86", Ложь); - - Возврат ЗначениеИзФайлаНастройки; - -КонецФункции - // Разрядность текущей операционной системы // // Возвращаемое значение: From 74efdecdef7f3e5e10122760d128541c59ea6def Mon Sep 17 00:00:00 2001 From: Vladimir Nadulich Date: Sat, 21 Nov 2020 01:14:45 +0300 Subject: [PATCH 04/25] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D1=8B=20=D0=B8=D0=BC=D0=B5=D0=BD=D0=B0=20?= =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD=D1=8B=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\321\200\321\201\320\270\320\270OneScript.os" | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" index 2d40e5f..e918286 100644 --- "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" +++ "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" @@ -49,9 +49,9 @@ Возврат Ложь; КонецЕсли; - ВерсииСимлинков = СимЛинки(); + АлиасыСимлинков = ПолучитьАлиасыСимлинков(); - ТекущаяВерсия = ВерсииСимлинков["current"]; + ТекущаяВерсия = АлиасыСимлинков["current"]; Возврат ПроверяемаяВерсия = ТекущаяВерсия; @@ -74,7 +74,7 @@ УстановленныеВерсии.Колонки.Добавить("Версия"); УстановленныеВерсии.Колонки.Добавить("ЭтоСимлинк"); - ВерсииСимлинков = СимЛинки(); + АлиасыСимлинков = ПолучитьАлиасыСимлинков(); КаталогУстановки = ПараметрыOVM.КаталогУстановкиПоУмолчанию(); НайденныеФайлы = НайтиФайлы(КаталогУстановки, ПолучитьМаскуВсеФайлы()); @@ -87,7 +87,7 @@ СтрокаВерсии.Алиас = НайденныйФайл.Имя; СтрокаВерсии.Путь = НайденныйФайл.ПолноеИмя; СтрокаВерсии.Версия = ПолучитьТочнуюВерсиюOneScript(СтрокаВерсии.Алиас); - СтрокаВерсии.ЭтоСимлинк = ВерсииСимлинков.Получить(НайденныйФайл.Имя) <> Неопределено; + СтрокаВерсии.ЭтоСимлинк = АлиасыСимлинков.Получить(НайденныйФайл.Имя) <> Неопределено; КонецЦикла; @@ -95,7 +95,7 @@ КонецФункции -Функция СимЛинки() +Функция ПолучитьАлиасыСимлинков() КаталогУстановки = ПараметрыOVM.КаталогУстановкиПоУмолчанию(); @@ -123,16 +123,16 @@ РВ.МногоСтрочный = Ложь; Совпадения = РВ.НайтиСовпадения(ВыводКоманды); - ВерсииСимлинков = Новый Соответствие; + АлиасыСимлинков = Новый Соответствие; РазделительПути = ПолучитьРазделительПути(); Для Каждого Совпадение Из Совпадения Цикл Группы = Совпадение.Группы; ЧастиПути = СтрРазделить(Группы[3].Значение, РазделительПути); - ВерсииСимлинков.Вставить(Группы[2].Значение, ЧастиПути[ЧастиПути.ВГраница()]); + АлиасыСимлинков.Вставить(Группы[2].Значение, ЧастиПути[ЧастиПути.ВГраница()]); КонецЦикла; - Возврат ВерсииСимлинков; + Возврат АлиасыСимлинков; КонецФункции From e2a29f40efff92a06f7665a31ec578c3701546f4 Mon Sep 17 00:00:00 2001 From: Vladimir Nadulich Date: Sat, 21 Nov 2020 10:55:52 +0300 Subject: [PATCH 05/25] =?UTF-8?q?=D0=A3=D1=81=D1=82=D0=B0=D0=BD=D0=BE?= =?UTF-8?q?=D0=B2=D0=BA=D0=B0=20"=D0=BF=D1=80=D0=B8=20=D0=BD=D0=B5=D0=BE?= =?UTF-8?q?=D0=B1=D1=85=D0=BE=D0=B4=D0=B8=D0=BC=D0=BE=D1=81=D1=82=D0=B8"?= =?UTF-8?q?=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D0=B8,=20=D1=81=D0=BE=D0=BE?= =?UTF-8?q?=D1=82=D0=B2=D0=B5=D1=81=D1=82=D0=B2=D0=B5=D1=82=D1=81=D1=82?= =?UTF-8?q?=D0=B2=D1=83=D1=8E=D1=89=D0=B5=D0=B9=20=D0=B1=D0=B8=D1=82=D0=BD?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D0=B8=20=D0=9E=D0=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...320\270\320\262\320\260\321\202\320\276\321\200OneScript.os" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\272\321\202\320\270\320\262\320\260\321\202\320\276\321\200OneScript.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\272\321\202\320\270\320\262\320\260\321\202\320\276\321\200OneScript.os" index 6cbae40..309161b 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\272\321\202\320\270\320\262\320\260\321\202\320\276\321\200OneScript.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\272\321\202\320\270\320\262\320\260\321\202\320\276\321\200OneScript.os" @@ -246,7 +246,7 @@ Если ВыполнятьУстановкуПриНеобходимости Тогда УстановщикOneScript = Новый УстановщикOneScript(); - УстановщикOneScript.УстановитьOneScript(ИспользуемаяВерсия); + УстановщикOneScript.УстановитьOneScript(ИспользуемаяВерсия, СистемнаяИнформация.Это64БитнаяОперационнаяСистема); Иначе ВызватьИсключение СтрШаблон("Не обнаружена требуемая версия <%1>", ИспользуемаяВерсия); КонецЕсли; From 1aedfadee704d97fd40911268fa643441c9db20d Mon Sep 17 00:00:00 2001 From: Vladimir Nadulich Date: Sat, 21 Nov 2020 11:56:06 +0300 Subject: [PATCH 06/25] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D0=B7=D0=B0=D0=B2=D0=B8=D1=81=D0=B8=D0=BC?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D1=8C=20=D0=BE=D1=82=20strings?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packagedef | 1 + 1 file changed, 1 insertion(+) diff --git a/packagedef b/packagedef index 5ae92f6..6046d34 100644 --- a/packagedef +++ b/packagedef @@ -11,5 +11,6 @@ .ЗависитОт("logos") .ЗависитОт("tempfiles") .ЗависитОт("cli", "0.9.8") + .ЗависитОт("strings") .ИсполняемыйФайл("src/cmd/ovm.os", "ovm") ; From d74519b2e90ec710f0867a658d41f7c4a5431670 Mon Sep 17 00:00:00 2001 From: Nadulich Date: Sun, 22 Nov 2020 18:13:57 +0300 Subject: [PATCH 07/25] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D1=82=D0=B5=D1=81=D1=82=20=D1=83=D0=B4=D0=B0?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- features/install-with-alias.feature | 2 +- features/install-with-clean.feature | 2 +- features/integration.feature | 13 ++++++++++++- features/step_definitions/install-with-alias.os | 8 +++++++- 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/features/install-with-alias.feature b/features/install-with-alias.feature index 376395e..60a8f8a 100644 --- a/features/install-with-alias.feature +++ b/features/install-with-alias.feature @@ -3,7 +3,7 @@ Функциональность: Установка движка с алиасом Как разработчик библиотек -Я иметь возможность установить несколько версий одного и того же движка +Я хочу иметь возможность установить несколько версий одного и того же движка Чтобы тестировать свою библиотеку с разным набором системных пакетов Контекст: diff --git a/features/install-with-clean.feature b/features/install-with-clean.feature index f62780e..09ca0a1 100644 --- a/features/install-with-clean.feature +++ b/features/install-with-clean.feature @@ -3,7 +3,7 @@ Функциональность: Установка движка с учетом сохранения библиотек Как пользователь OneScript -Я иметь возможность обновлять движок без последующей переустановки библиотек +Я хочу иметь возможность обновлять движок без последующей переустановки библиотек Чтобы не тратить свое время Контекст: diff --git a/features/integration.feature b/features/integration.feature index b4fb0e9..4bb9b15 100644 --- a/features/integration.feature +++ b/features/integration.feature @@ -12,7 +12,7 @@ Сценарий: Вывод справки Когда Я выполняю команду "ovm" Тогда я вижу в консоли вывод "OneScript Version Manager" - И я вижу в консоли вывод "Строка запуска: ovm [ОПЦИИ] КОМАНДА [аргументы...]" + И я вижу в консоли вывод "Строка запуска: ovm [ОПЦИИ] КОМАНДА [аргументы...]" Сценарий: Вывод версии Когда Я выполняю команду "ovm -v" @@ -32,6 +32,17 @@ И Я выполняю команду "ovm use stable" Тогда я вижу в консоли вывод "OneScript stable активирован" +Сценарий: Удаление версии тождественной текущей + Когда Я выполняю команду "ovm install --name latest stable" + Тогда я вижу в консоли вывод "Установка OneScript stable..." + И я вижу в консоли вывод "Установка OneScript stable завершена" + И я вижу в консоли вывод "ovm use latest" + + Когда Я выполняю команду "ovm delete latest" + Тогда Я Показываю вывод команды + И я не вижу в консоли вывод "Версия не удалена, т.к. является текущей." + И я вижу в консоли вывод "Версия latest удалена" + Сценарий: Проверка использования версии Когда Я выполняю команду "ovm ls" И Я Показываю вывод команды diff --git a/features/step_definitions/install-with-alias.os b/features/step_definitions/install-with-alias.os index b98104d..e054d34 100644 --- a/features/step_definitions/install-with-alias.os +++ b/features/step_definitions/install-with-alias.os @@ -28,7 +28,13 @@ //Я удаляю каталог "./temp/ovm" Процедура ЯУдаляюКаталог(Знач ПутьККаталогу) Экспорт Если ФС.Существует(ПутьККаталогу) Тогда - УдалитьФайлы(Новый Файл(ПутьККаталогу).ПолноеИмя); + ПолноеИмя = Новый Файл(ПутьККаталогу).ПолноеИмя; + + // Обход ошибки удаления каталога с символической ссылкой внутри (windows only) + // junction нужно удалять явно + УдалитьФайлы(ОбъединитьПути(ПолноеИмя, "current")); + + УдалитьФайлы(ПолноеИмя); КонецЕсли; КонецПроцедуры From a17fb806bc558b0ac27efe596d7546bbc8ef7d35 Mon Sep 17 00:00:00 2001 From: Vladimir Nadulich Date: Sun, 22 Nov 2020 19:15:30 +0300 Subject: [PATCH 08/25] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D1=82=D0=B5=D1=81=D1=82=20=D1=83=D1=81=D1=82?= =?UTF-8?q?=D0=B0=D0=BD=D0=BE=D0=B2=D0=BA=D0=B8=20x64=20=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D1=81=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- features/integration.feature | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/features/integration.feature b/features/integration.feature index b4fb0e9..abad3dd 100644 --- a/features/integration.feature +++ b/features/integration.feature @@ -40,3 +40,12 @@ И я вижу в консоли строку подобно ".*oscript$" И Я выполняю команду "which opm" И я вижу в консоли строку подобно ".*opm$" + +Сценарий: Проверка установки x64 и опции --x86 + Когда Я выполняю команду "ovm install stable" + Тогда я вижу в консоли вывод "Скачиваю установщик версии stable-x64..." + И я вижу в консоли вывод "Установка OneScript stable завершена" + + Когда Я выполняю команду "ovm install --x86 stable" + Тогда я вижу в консоли вывод "Скачиваю установщик версии stable..." + И я вижу в консоли вывод "Установка OneScript stable завершена" From 9aaf75833f56555156945773f02ba403a097d876 Mon Sep 17 00:00:00 2001 From: Vladimir Nadulich Date: Mon, 20 Sep 2021 00:13:01 +0300 Subject: [PATCH 09/25] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=D0=B0=D1=87=D0=B8=20=D0=BF?= =?UTF-8?q?=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...320\270\320\262\320\260\321\202\320\276\321\200OneScript.os" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\272\321\202\320\270\320\262\320\260\321\202\320\276\321\200OneScript.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\272\321\202\320\270\320\262\320\260\321\202\320\276\321\200OneScript.os" index 309161b..ede1288 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\272\321\202\320\270\320\262\320\260\321\202\320\276\321\200OneScript.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\272\321\202\320\270\320\262\320\260\321\202\320\276\321\200OneScript.os" @@ -246,7 +246,7 @@ Если ВыполнятьУстановкуПриНеобходимости Тогда УстановщикOneScript = Новый УстановщикOneScript(); - УстановщикOneScript.УстановитьOneScript(ИспользуемаяВерсия, СистемнаяИнформация.Это64БитнаяОперационнаяСистема); + УстановщикOneScript.УстановитьOneScript(ИспользуемаяВерсия, , , СистемнаяИнформация.Это64БитнаяОперационнаяСистема); Иначе ВызватьИсключение СтрШаблон("Не обнаружена требуемая версия <%1>", ИспользуемаяВерсия); КонецЕсли; From efb945331d94cd33ac52ff62f86d40494d0b9d51 Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Sun, 14 Nov 2021 16:11:21 +0300 Subject: [PATCH 10/25] =?UTF-8?q?=D0=9E=D1=82=D0=BB=D0=B0=D0=B4=D0=BA?= =?UTF-8?q?=D0=B0=20=D1=81=D0=BA=D1=80=D0=B8=D0=BF=D1=82=D0=BE=D0=B2,=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA=D0=B0=D0=B5=D0=BC=D1=8B?= =?UTF-8?q?=D1=85=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20OVM,=20=D0=B2=20VSCod?= =?UTF-8?q?e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c3646db..42e7841 100644 --- a/README.md +++ b/README.md @@ -162,14 +162,28 @@ C:\Users\NikitaGryzlov\AppData\Local\ovm\1.0.19\bin\oscript.exe # Путь к 1. C:\Users\NikitaGryzlov\AppData\Local\ovm\current\bin\oscript.exe ``` -### Получение пути к исполняемому файлу oscript - ```sh $ ovm which 1.0.19 C:\Users\NikitaGryzlov\AppData\Local\ovm\1.0.19\bin\oscript.exe ``` +### Отладка скриптов, запускаемых через OVM, в VSCode + +После первичной настройки OVM в каталоге вашего проекта нужно штатно настроить отладчик 1скрипт + +Далее нужно добавить\изменить файл `.vscode/launch.json` + +В разделе `configurations` файла нужно добавить\установить следующие строки +```json + "windows": { + "runtimeExecutable": "${env:OVM_OSCRIPTBIN}\\oscript.exe" + }, + "linux": { + "runtimeExecutable": "${env:OVM_OSCRIPTBIN}/oscript" + } +``` + ## Конфигурирование ovm ovm имеет несколько конфигурационных параметров, управляющих его поведением. Эти параметры можно задать с помощью команды `config` From 475bf41e8ac557fb5914936b7157789e21a1ec63 Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Sun, 14 Nov 2021 16:12:35 +0300 Subject: [PATCH 11/25] =?UTF-8?q?=D0=B2=D0=B5=D1=80=D0=BD=D1=83=D0=BB=20?= =?UTF-8?q?=D1=81=D0=BB=D1=83=D1=87=D0=B0=D0=B9=D0=BD=D0=BE=20=D1=83=D0=B4?= =?UTF-8?q?=D0=B0=D0=BB=D0=B5=D0=BD=D0=BD=D1=8B=D0=B9=20=D1=82=D0=B5=D0=BA?= =?UTF-8?q?=D1=81=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 42e7841..5915485 100644 --- a/README.md +++ b/README.md @@ -162,6 +162,8 @@ C:\Users\NikitaGryzlov\AppData\Local\ovm\1.0.19\bin\oscript.exe # Путь к 1. C:\Users\NikitaGryzlov\AppData\Local\ovm\current\bin\oscript.exe ``` +### Получение пути к исполняемому файлу oscript + ```sh $ ovm which 1.0.19 From 9ad8cf76785e4af587b51782dc01111d906ec458 Mon Sep 17 00:00:00 2001 From: Nikita Fedkin Date: Tue, 19 Apr 2022 17:45:34 +0300 Subject: [PATCH 12/25] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=20=D1=8F=D0=BA=D0=BE=D1=80=D1=8C=20=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=B0=D0=BA=D1=82=D0=B8=D0=B2=D0=B0=D1=86=D0=B8=D1=8E?= =?UTF-8?q?=20=D0=B2=20cmd?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5915485..27fec9a 100644 --- a/README.md +++ b/README.md @@ -86,7 +86,7 @@ export $HOME/.local/share/ovm/current/bin:$PATH Для `ConEmu` активация производится через `Settings` -> `Startup` -> `Environment`. В метод установки PATH необходимо добавить путь к %OVM_OSCRIPTBIN% перед текущим `%PATH%`. Например, `set PATH=%OVM_OSCRIPTBIN%;%PATH%` -Современные версии `Cmder` для Windows автоматически подхватывают переменные среды и переопределение автозапуска в реестре (см. Активация в cmd) +Современные версии `Cmder` для Windows автоматически подхватывают переменные среды и переопределение автозапуска в реестре (см. Активация в cmd) ## Использование From c131684a522a799c7a07dcb9a1f7ee458cf7c243 Mon Sep 17 00:00:00 2001 From: Nikita Fedkin Date: Mon, 26 Dec 2022 08:22:58 +0300 Subject: [PATCH 13/25] =?UTF-8?q?=D0=9F=D0=BE=D0=B4=D0=B4=D0=B5=D1=80?= =?UTF-8?q?=D0=B6=D0=BA=D0=B0=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D0=B8=202.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0\262\321\211\320\270\320\272OneScript.os" | 60 +++++++++++++-- ...1\200\321\201\320\270\320\270OneScript.os" | 77 +++++++++++++++++-- 2 files changed, 122 insertions(+), 15 deletions(-) diff --git "a/src/core/\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\321\211\320\270\320\272OneScript.os" "b/src/core/\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\321\211\320\270\320\272OneScript.os" index fdbb289..f2c911d 100644 --- "a/src/core/\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\321\211\320\270\320\272OneScript.os" +++ "b/src/core/\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\321\211\320\270\320\272OneScript.os" @@ -147,17 +147,37 @@ Процедура ДобавитьSHСкриптыПриНеобходимости(Знач КаталогУстановкиВерсии) + ЭтоКаталогВерсии2 = ВерсииOneScript.ЭтоКаталогВерсии2(КаталогУстановкиВерсии); Если ЭтоWindows Тогда + Если ЭтоКаталогВерсии2 Тогда + + ПутьКСкрипту = ВерсииOneScript.ПутьКИсполняемомуФайлуВерсии2(КаталогУстановкиВерсии); + ТекстСкрипта = + "@dotnet %~dp0\oscript.dll %* + |@exit /b %ERRORLEVEL% + |"; + + ДобавитьBatСкрипт(ПутьКСкрипту, ТекстСкрипта); + + КонецЕсли; Возврат; КонецЕсли; - - ПутьКСкрипту = ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript"); - ТекстСкрипта = - "#!/bin/sh - |dirpath=`dirname $0` - |mono $dirpath/oscript.exe ""$@"" - |"; - + + ПутьКСкрипту = ВерсииOneScript.ПутьКИсполняемомуФайлуВерсии2(КаталогУстановкиВерсии); + + Если ЭтоКаталогВерсии2 Тогда + ТекстСкрипта = + "#!/bin/sh + |dirpath=`dirname $0` + |dotnet $dirpath/oscript.dll ""$@"" + |"; + Иначе + ТекстСкрипта = + "#!/bin/sh + |dirpath=`dirname $0` + |mono $dirpath/oscript.exe ""$@"" + |"; + КонецЕсли; ДобавитьShСкрипт(ПутьКСкрипту, ТекстСкрипта); ПутьКСкрипту = ОбъединитьПути(КаталогУстановкиВерсии, "bin", "opm"); @@ -210,6 +230,30 @@ КонецПроцедуры +Процедура ДобавитьBatСкрипт(Знач ПутьКСкрипту, Знач ТекстСкрипта) + + Лог.Информация("Создание bat-скрипта %1...", Новый Файл(ПутьКСкрипту).ИмяБезРасширения); + + Лог.Отладка("Путь с bat-скрипту: %1", ПутьКСкрипту); + + Лог.Отладка( + "Текст скрипта: + |%1", + ТекстСкрипта + ); + + Если ФС.ФайлСуществует(ПутьКСкрипту) Тогда + Лог.Отладка("bat-скрипт уже существует"); + Возврат; + КонецЕсли; + + ЗаписьТекста = Новый ЗаписьТекста(ПутьКСкрипту, КодировкаТекста.ANSI, , , Символы.ПС); + + ЗаписьТекста.Записать(ТекстСкрипта); + ЗаписьТекста.Закрыть(); + +КонецПроцедуры + Процедура ПроверитьКорректностьПереданнойВерсии(Знач ВерсияКУстановке) Если СтрРазделить(ВерсияКУстановке, ".").Количество() <> ПараметрыOVM.КоличествоРазрядовВНомереВерсии() И НРег(ВерсияКУстановке) <> "stable" diff --git "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" index e918286..0df74cb 100644 --- "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" +++ "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" @@ -19,8 +19,10 @@ КаталогУстановки = ПараметрыOVM.КаталогУстановкиПоУмолчанию(); КаталогУстановкиВерсии = ОбъединитьПути(КаталогУстановки, ПроверяемаяВерсия); - Результат = ФС.КаталогСуществует(КаталогУстановкиВерсии); - Результат = Результат И ФС.ФайлСуществует(ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript.exe")); + СуществуетКаталогУстановкиВерсии = ФС.КаталогСуществует(КаталогУстановкиВерсии); + СуществуетOscriptExe = ФС.ФайлСуществует(ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript.exe")); + ЭтоКаталогВерсии2 = ЭтоКаталогВерсии2(КаталогУстановкиВерсии); + Результат = СуществуетКаталогУстановкиВерсии И (СуществуетOscriptExe ИЛИ ЭтоКаталогВерсии2); Лог.Отладка("Версия %1 установлена: %2", ПроверяемаяВерсия, Результат); Возврат Результат; @@ -57,6 +59,56 @@ КонецФункции +// Проверяет, что переданный каталог является каталогом OneScript 2.0+ +// +// Параметры: +// КаталогУстановкиВерсии - Строка - Путь к конкретной версии. +// +// Возвращаемое значение: +// Булево +// +Функция ЭтоКаталогВерсии2(КаталогУстановкиВерсии) Экспорт + Возврат ФС.ФайлСуществует(ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript.dll")); +КонецФункции + +// Получает путь к исполняемому файлу OneScript по шаблону версии 1.x. +// +// Параметры: +// КаталогУстановкиВерсии - Строка - Путь к конкретной версии. +// +// Возвращаемое значение: +// Строка - Путь к исполняемому файлу. +// +Функция ПутьКИсполняемомуФайлуВерсии1(КаталогУстановкиВерсии) Экспорт + + ПутьКИсполняемомуФайлу = ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript"); + Если ЭтоWindows Тогда + ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлу + ".exe"; + КонецЕсли; + + Возврат ПутьКИсполняемомуФайлу; + +КонецФункции + +// Получает путь к исполняемому файлу OneScript по шаблону версии 1.x. +// +// Параметры: +// КаталогУстановкиВерсии - Строка - Путь к конкретной версии. +// +// Возвращаемое значение: +// Строка - Путь к исполняемому файлу. +// +Функция ПутьКИсполняемомуФайлуВерсии2(КаталогУстановкиВерсии) Экспорт + + ПутьКИсполняемомуФайлу = ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript"); + Если ЭтоWindows Тогда + ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлу + ".bat"; + КонецЕсли; + + Возврат ПутьКИсполняемомуФайлу; + +КонецФункции + // Получить информацию об установленных версиях // // Возвращаемое значение: @@ -253,13 +305,13 @@ КонецФункции -// Получить полный путь к установленному движку OneScript (файлу oscript.exe) +// Получить полный путь к исполняемому файлу OneScript (файлу oscript.exe|oscript.bat|oscript) // // Параметры: // УстановленнаяВерсия - Строка - Алиас проверяемой версии // // Возвращаемое значение: -// Строка - Полный путь к файлу oscript.exe +// Строка - Полный путь к исполняемому файлу oscript // Функция ПолучитьПутьКУстановленномуДвижкуOneScript(Знач УстановленнаяВерсия) Экспорт @@ -270,7 +322,13 @@ "Результат = Элемент.Алиас = ДополнительныеПараметры.УстановленнаяВерсия", Новый Структура("УстановленнаяВерсия", УстановленнаяВерсия)) .Первые(1) - .Обработать("Результат = ОбъединитьПути(Элемент.Путь, ""bin"", ""oscript.exe"")") + .Обработать(" + |Если ВерсииOneScript.ЭтоКаталогВерсии2(Элемент.Путь) Тогда + | Результат = ВерсииOneScript.ПутьКИсполняемомуФайлуВерсии2(Элемент.Путь); + |Иначе + | Результат = ВерсииOneScript.ПутьКИсполняемомуФайлуВерсии1(Элемент.Путь); + |КонецЕсли; + |") .ПолучитьПервый(); Возврат ПутьКУстановленнойВерсии; @@ -294,11 +352,16 @@ КаталогУстановки = ПараметрыOVM.КаталогУстановкиПоУмолчанию(); КаталогУстановкиВерсии = ОбъединитьПути(КаталогУстановки, ПроверяемаяВерсия); - ПутьКИсполняемомуФайлу = ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript.exe"); + ЭтоКаталогВерсии2 = ЭтоКаталогВерсии2(КаталогУстановкиВерсии); + Если ЭтоКаталогВерсии2 Тогда + ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлуВерсии2(КаталогУстановкиВерсии); + Иначе + ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлуВерсии1(КаталогУстановкиВерсии); + КонецЕсли; Команда = Новый Команда(); - Если ЭтоWindows Тогда + Если ЭтоWindows ИЛИ ЭтоКаталогВерсии2 Тогда Команда.УстановитьКоманду(ПутьКИсполняемомуФайлу); Иначе Команда.УстановитьКоманду("mono"); From 5a3dde1cfbc1e93cc1833c6d14c3eef19830496c Mon Sep 17 00:00:00 2001 From: Nikita Fedkin Date: Mon, 26 Dec 2022 16:24:03 +0300 Subject: [PATCH 14/25] =?UTF-8?q?=D0=90=D0=BA=D1=82=D0=B8=D0=B2=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D1=8F=20=D0=BD=D0=B0=20macos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Sergey Batanov --- ...0\260\321\202\320\276\321\200OneScript.os" | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\272\321\202\320\270\320\262\320\260\321\202\320\276\321\200OneScript.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\272\321\202\320\270\320\262\320\260\321\202\320\276\321\200OneScript.os" index ede1288..bb74215 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\272\321\202\320\270\320\262\320\260\321\202\320\276\321\200OneScript.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\272\321\202\320\270\320\262\320\260\321\202\320\276\321\200OneScript.os" @@ -222,19 +222,19 @@ ТекстФайлаПрофиля = "export PATH=""" + ПутьККаталогуBin + ":$PATH"" |export OSCRIPTBIN=""" + ПутьККаталогуBin + """"; - ПутьКФайлу = ОбъединитьПути( - СистемнаяИнформация.ПолучитьПутьПапки(СпециальнаяПапка.ПрофильПользователя), - ".profile" - ); - - ДобавитьТекстВНовыйИлиИмеющийсяФайл(ТекстФайлаПрофиля, ПутьКФайлу); - - ПутьКФайлу = ОбъединитьПути( - СистемнаяИнформация.ПолучитьПутьПапки(СпециальнаяПапка.ПрофильПользователя), - ".bashrc" - ); - - ДобавитьТекстВНовыйИлиИмеющийсяФайл(ТекстФайлаПрофиля, ПутьКФайлу); + ИменаДляОбработки = Новый Массив; + ИменаДляОбработки.Добавить(".profile"); + ИменаДляОбработки.Добавить(".bashrc"); + ИменаДляОбработки.Добавить(".zprofile"); + ИменаДляОбработки.Добавить(".zshrc"); + + КаталогПрофиля = СистемнаяИнформация.ПолучитьПутьПапки(СпециальнаяПапка.ПрофильПользователя); + Для Каждого ИмяФайла Из ИменаДляОбработки Цикл + + ПутьКФайлу = ОбъединитьПути(КаталогПрофиля, ИмяФайла); + ДобавитьТекстВНовыйИлиИмеющийсяФайл(ТекстФайлаПрофиля, ПутьКФайлу); + + КонецЦикла; КонецПроцедуры From 8c9bf6871ec60415e3a7d6d90491246233079fa0 Mon Sep 17 00:00:00 2001 From: olegtymko Date: Tue, 27 Dec 2022 14:45:34 +0700 Subject: [PATCH 15/25] =?UTF-8?q?fix:=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B8=20?= =?UTF-8?q?=D1=82=D0=BE=D1=87=D0=BD=D0=BE=D0=B9=20=D0=B2=D0=B5=D1=80=D1=81?= =?UTF-8?q?=D0=B8=D0=B8=20=D0=BD=D0=B0=201.3.0=20=D0=B8=20=D0=BB=D0=B8?= =?UTF-8?q?=D0=BD=D1=83=D0=BA=D1=81=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20mon?= =?UTF-8?q?o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...222\320\265\321\200\321\201\320\270\320\270OneScript.os" | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" index 0df74cb..98fc802 100644 --- "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" +++ "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" @@ -361,12 +361,10 @@ Команда = Новый Команда(); - Если ЭтоWindows ИЛИ ЭтоКаталогВерсии2 Тогда - Команда.УстановитьКоманду(ПутьКИсполняемомуФайлу); - Иначе + Если СтрЗаканчиваетсяНа(ПутьКИсполняемомуФайлу, ".exe") Тогда Команда.УстановитьКоманду("mono"); - Команда.ДобавитьПараметр(ПутьКИсполняемомуФайлу); КонецЕсли; + Команда.ДобавитьПараметр(ПутьКИсполняемомуФайлу); Команда.ДобавитьПараметр("-version"); From 82e381810ff719801ac2bec0f9e102f5070a098e Mon Sep 17 00:00:00 2001 From: olegtymko Date: Tue, 27 Dec 2022 16:19:28 +0700 Subject: [PATCH 16/25] =?UTF-8?q?=D1=83=D0=B1=D1=80=D0=B0=D0=BB=20=D0=BC?= =?UTF-8?q?=D0=BE=D0=BD=D0=BE=20=D0=B8=D0=B7=20=D1=83=D1=81=D0=BB=D0=BE?= =?UTF-8?q?=D0=B2=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\222\320\265\321\200\321\201\320\270\320\270OneScript.os" | 5 ----- 1 file changed, 5 deletions(-) diff --git "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" index 98fc802..78a989e 100644 --- "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" +++ "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" @@ -360,12 +360,7 @@ КонецЕсли; Команда = Новый Команда(); - - Если СтрЗаканчиваетсяНа(ПутьКИсполняемомуФайлу, ".exe") Тогда - Команда.УстановитьКоманду("mono"); - КонецЕсли; Команда.ДобавитьПараметр(ПутьКИсполняемомуФайлу); - Команда.ДобавитьПараметр("-version"); Команда.Исполнить(); From 9bd2f27e9acf554a11680dc043758064fb36ecdf Mon Sep 17 00:00:00 2001 From: olegtymko Date: Tue, 27 Dec 2022 16:25:30 +0700 Subject: [PATCH 17/25] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BD=D0=B0=20=D0=A3=D1=81=D1=82=D0=B0=D0=BD?= =?UTF-8?q?=D0=BE=D0=B2=D0=B8=D1=82=D1=8C=D0=9A=D0=BE=D0=BC=D0=B0=D0=BD?= =?UTF-8?q?=D0=B4=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" index 78a989e..d554202 100644 --- "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" +++ "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" @@ -360,7 +360,7 @@ КонецЕсли; Команда = Новый Команда(); - Команда.ДобавитьПараметр(ПутьКИсполняемомуФайлу); + Команда.УстановитьКоманду(ПутьКИсполняемомуФайлу); Команда.ДобавитьПараметр("-version"); Команда.Исполнить(); From 407d7452e86abef8707bbfe3c07a328847dcb59d Mon Sep 17 00:00:00 2001 From: sfaqer Date: Sun, 20 Aug 2023 17:13:35 +1000 Subject: [PATCH 18/25] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=B2=D0=BE?= =?UTF-8?q?=D0=B4=20=D0=BF=D1=80=D0=BE=D0=B5=D0=BA=D1=82=D0=B0=20=D0=BD?= =?UTF-8?q?=D0=B0=20=D1=80=D0=B5=D0=BB=D1=8C=D1=81=D1=8B=20=D0=BE=D1=81?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- autumn-properties.json | 17 + packagedef | 5 +- src/cmd/ovm.os | 84 +- ...\320\260\320\275\320\264\320\260Config.os" | 42 +- ...320\260\320\275\320\264\320\260Install.os" | 23 +- ...74\320\260\320\275\320\264\320\260List.os" | 76 +- ...274\320\260\320\275\320\264\320\260Run.os" | 69 +- ...0\260\320\275\320\264\320\260Uninstall.os" | 77 +- ...274\320\260\320\275\320\264\320\260Use.os" | 45 +- ...4\320\260\320\275\320\264\320\260Which.os" | 45 +- ...20\266\320\265\320\275\320\270\321\217.os" | 18 - ...0\260\321\202\320\276\321\200OneScript.os" | 13 +- ...270\321\217\320\233\320\276\320\263OVM.os" | 4 + ...265\321\200\320\233\320\276\320\263OVM.os" | 54 ++ ...1\200\321\201\320\270\320\270OneScript.os" | 779 +++++++++--------- ...1\217\321\202\320\276\321\200OneScript.os" | 13 +- ...274\320\265\321\202\321\200\321\213OVM.os" | 63 +- ...20\266\320\265\320\275\320\270\321\217.os" | 16 + ...272\320\260\320\233\320\276\320\263OVM.os" | 25 + ...0\262\321\211\320\270\320\272OneScript.os" | 15 +- ...21\202\321\200\320\276\320\265\320\272.os" | 24 +- ...20\265\320\275\320\264\320\265\321\200.os" | 43 - 22 files changed, 746 insertions(+), 804 deletions(-) create mode 100644 autumn-properties.json delete mode 100644 "src/cmd/\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\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" create mode 100644 "src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\233\320\276\320\263OVM.os" create mode 100644 "src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\277\320\277\320\265\320\275\320\264\320\265\321\200\320\233\320\276\320\263OVM.os" rename "src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" => "src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" (94%) rename "src/core/\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\213OVM.os" => "src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213OVM.os" (58%) create mode 100644 "src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" create mode 100644 "src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\321\201\320\272\320\273\320\260\320\264\320\272\320\260\320\233\320\276\320\263OVM.os" delete mode 100644 "src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\233\320\276\320\263\320\276\321\201\320\220\320\277\320\277\320\265\320\275\320\264\320\265\321\200.os" diff --git a/autumn-properties.json b/autumn-properties.json new file mode 100644 index 0000000..36b55dd --- /dev/null +++ b/autumn-properties.json @@ -0,0 +1,17 @@ +{ + "logos": { + "logger": { + "oscript.app.ovm": { + "level": "INFO", + "appenders": "logos", + "classlayout": "РаскладкаЛогOVM" + } + }, + "appender": { + "logos": { + "type": "АппендерЛогOVM", + "level": "INFO" + } + } + } +} \ No newline at end of file diff --git a/packagedef b/packagedef index 6046d34..b0b40b2 100644 --- a/packagedef +++ b/packagedef @@ -8,9 +8,10 @@ .ЗависитОт("1commands", "1.3.2") .ЗависитОт("fluent", "0.3.1") .ЗависитОт("fs") - .ЗависитОт("logos") .ЗависитОт("tempfiles") - .ЗависитОт("cli", "0.9.8") .ЗависитОт("strings") + .ЗависитОт("autumn", "3.1.4") + .ЗависитОт("autumn-logos", "1.1.0") + .ЗависитОт("autumn-cli", "1.0.0") .ИсполняемыйФайл("src/cmd/ovm.os", "ovm") ; diff --git a/src/cmd/ovm.os b/src/cmd/ovm.os index a2c49db..f3dfe11 100644 --- a/src/cmd/ovm.os +++ b/src/cmd/ovm.os @@ -1,81 +1,13 @@ -#Использовать cli -#Использовать tempfiles +#Использовать autumn +#Использовать autumn-logos +#Использовать autumn-cli #Использовать "." #Использовать "../core" -/////////////////////////////////////////////////////////////////////////////// +Поделка = Новый Поделка(); +Поделка + .ПросканироватьКаталог(ОбъединитьПути(ТекущийСценарий().Каталог, "..", "core")) + .ПросканироватьКаталог(ТекущийСценарий().Каталог); -// Обработчик выполнения команды -// -// Параметры: -// КомандаПриложения - КомандаПриложения - Выполняемая команда -// -Процедура ВыполнитьКоманду(Знач КомандаПриложения) Экспорт - - КомандаПриложения.ВывестиСправку(); - -КонецПроцедуры - -Процедура ВыполнитьПриложение() - - КонсольноеПриложение = Новый КонсольноеПриложение( - ПараметрыПриложения.ИмяПриложения(), - "OneScript Version Manager v" + ПараметрыПриложения.Версия() - ); - - КонсольноеПриложение.Версия("v version", ПараметрыПриложения.Версия()); - - КонсольноеПриложение.ДобавитьКоманду( - "install i", - "Установить OneScript указанных версий", - Новый КомандаInstall() - ); - КонсольноеПриложение.ДобавитьКоманду( - "use u", - "Использовать OneScript указанной версии", - Новый КомандаUse() - ); - КонсольноеПриложение.ДобавитьКоманду( - "uninstall delete d", - "Удалить OneScript указанных версий", - Новый КомандаUninstall() - ); - КонсольноеПриложение.ДобавитьКоманду( - "list ls", - "Вывести список установленных и/или доступных версий OneScript", - Новый КомандаList() - ); - КонсольноеПриложение.ДобавитьКоманду( - "run r", - "Запустить исполняемый файл в окружении указанной версии OneScript", - Новый КомандаRun() - ); - КонсольноеПриложение.ДобавитьКоманду( - "which w", - "Вывести путь к установленной версии OneScript", - Новый КомандаWhich() - ); - КонсольноеПриложение.ДобавитьКоманду( - "config", - "Настройки ovm. Прокси, сервера и т.п.", - Новый КомандаConfig() - ); - - КонсольноеПриложение.УстановитьОсновноеДействие(ЭтотОбъект); - КонсольноеПриложение.Запустить(АргументыКоманднойСтроки); - -КонецПроцедуры - -Лог = ПараметрыOVM.ПолучитьЛог(); -КодСостояния = 0; -Попытка - ВыполнитьПриложение(); -Исключение - Лог.Ошибка(ОписаниеОшибки()); - КодСостояния = 1; -КонецПопытки; - -ВременныеФайлы.Удалить(); - -ЗавершитьРаботу(КодСостояния); +Поделка.ЗапуститьПриложение(); diff --git "a/src/cmd/\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\260Config.os" "b/src/cmd/\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\260Config.os" index 4ef1a1e..0cb3e29 100644 --- "a/src/cmd/\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\260Config.os" +++ "b/src/cmd/\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\260Config.os" @@ -1,32 +1,22 @@ #Использовать "../../core" -Процедура ОписаниеКоманды(КомандаПриложения) Экспорт - - КомандаПриложения.Аргумент( - "NAME", - , - "Название опции") - .ТСтрока(); +&Аргумент(Имя = "NAME", Описание = "Название опции") +&ТСтрока +Перем Имя; - КомандаПриложения.Аргумент( - "VALUE", - , - "Значение опции (массив строк)") - .ТСтрока(); - -КонецПроцедуры +&Аргумент(Имя = "VALUE", Описание = "Значение опции (массив строк)") +&ТСтрока +Перем Значение; -// Обработчик выполнения команды -// -// Параметры: -// КомандаПриложения - КомандаПриложения - Выполняемая команда -// -Процедура ВыполнитьКоманду(Знач КомандаПриложения) Экспорт - Имя = КомандаПриложения.ЗначениеАргумента("NAME"); - Значение = КомандаПриложения.ЗначениеАргумента("VALUE"); +&Пластилин +Перем ФайлНастроек; - Хранилище = ПараметрыOVM.ХранилищеНастроек(); - Хранилище.Установить(Имя, Значение); - Хранилище.Записать(); +&КомандаПриложения(Имя = "config", Описание = "Настройки ovm. Прокси, сервера и т.п.") +Процедура ПриСозданииОбъекта() +КонецПроцедуры -КонецПроцедуры \ No newline at end of file +&ВыполнениеКоманды +Процедура ВыполнениеКоманды() Экспорт + ФайлНастроек.Установить(Имя, Значение); + ФайлНастроек.Записать(); +КонецПроцедуры diff --git "a/src/cmd/\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\260Install.os" "b/src/cmd/\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\260Install.os" index 282b3f7..5922dfd 100644 --- "a/src/cmd/\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\260Install.os" +++ "b/src/cmd/\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\260Install.os" @@ -1,7 +1,18 @@ #Использовать "../../core" +&ЛогOVM Перем Лог; +&Пластилин +Перем УстановщикOneScript; + +&Пластилин +Перем ПараметрыOVM; + +&КомандаПриложения(Имя = "install i", Описание = "Установить OneScript указанных версий") +Процедура ПриСозданииОбъекта() +КонецПроцедуры + // Заполняет описание команды для библиотеки cli // // Параметры: @@ -38,11 +49,11 @@ // КомандаПриложения - КомандаПриложения - Выполняемая команда // Процедура ВыполнитьКоманду(Знач КомандаПриложения) Экспорт - + МассивВерсийКУстановке = КомандаПриложения.ЗначениеАргумента("VERSION"); АлиасВерсии = КомандаПриложения.ЗначениеОпции("name"); ОчищатьКаталогУстановки = КомандаПриложения.ЗначениеОпции("clean"); - + Если ЗначениеЗаполнено(АлиасВерсии) И МассивВерсийКУстановке.Количество() > 1 Тогда ВызватьИсключение "Опция <--name> может быть задана только при установке одной версии OneScript"; КонецЕсли; @@ -52,13 +63,11 @@ Иначе ИспользоватьХ64 = Ложь; КонецЕсли; - - УстановщикOneScript = Новый УстановщикOneScript(); - + Для Каждого ВерсияКУстановке Из МассивВерсийКУстановке Цикл УстановщикOneScript.УстановитьOneScript(ВерсияКУстановке, АлиасВерсии, ОчищатьКаталогУстановки, ИспользоватьХ64); КонецЦикла; - + Если МассивВерсийКУстановке.Количество() > 0 Тогда Лог.Информация( "Для начала использования версии OneScript, выполните команду: @@ -68,5 +77,3 @@ КонецЕсли; КонецПроцедуры - -Лог = ПараметрыOVM.ПолучитьЛог(); diff --git "a/src/cmd/\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\260List.os" "b/src/cmd/\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\260List.os" index 9e5dbb8..411b1f6 100644 --- "a/src/cmd/\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\260List.os" +++ "b/src/cmd/\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\260List.os" @@ -1,50 +1,50 @@ #Использовать "../../core" +&ЛогOVM Перем Лог; -// Заполняет описание команды для библиотеки cli -// -// Параметры: -// КомандаПриложения - КомандаПриложения - Настраиваемая команда -// -Процедура ОписаниеКоманды(КомандаПриложения) Экспорт - - КомандаПриложения - .Опция("remote r", Ложь, "Вывести список доступных к установке версий") - .ВОкружении("OVM_LIST_REMOTE"); - - КомандаПриложения - .Опция("quiet q", Ложь, "Тихий режим, вывод только алиасов версий") - .ВОкружении("OVM_LIST_QUIET"); - - КомандаПриложения - .Опция("all a", Ложь, "Вывести список всех версий: установленных и доступных на сайте") - .ВОкружении("OVM_LIST_ALL"); +&Пластилин("АппендерЛогOVM") +Перем Аппендер; + +&Пластилин +Перем ВерсииOneScript; + +&Опция(Имя = "remote r", Описание = "Вывести список доступных к установке версий") +&ВОкружении("OVM_LIST_REMOTE") +&ТБулево +&ПоУмолчанию(Ложь) +Перем ВыводитьСписокВерсийНаСайте; + +&Опция(Имя = "all a", Описание = "Вывести список всех версий: установленных и доступных на сайте") +&ВОкружении("OVM_LIST_ALL") +&ТБулево +&ПоУмолчанию(Ложь) +Перем ВыводитьВсеВерсии; + +&Опция(Имя = "quiet q", Описание = "Тихий режим, вывод только алиасов версий") +&ВОкружении("OVM_LIST_QUIET") +&ТБулево +&ПоУмолчанию(Ложь) +Перем ТихийРежим; +&КомандаПриложения(Имя = "list ls", Описание = "Вывести список установленных и/или доступных версий OneScript") +Процедура ПриСозданииОбъекта() КонецПроцедуры -// Обработчик выполнения команды -// -// Параметры: -// КомандаПриложения - КомандаПриложения - Выполняемая команда -// -Процедура ВыполнитьКоманду(Знач КомандаПриложения) Экспорт - - ВыводитьСписокВерсийНаСайте = КомандаПриложения.ЗначениеОпции("remote"); - ВыводитьВсеВерсии = КомандаПриложения.ЗначениеОпции("all"); - ТихийРежим = КомандаПриложения.ЗначениеОпции("quiet"); - +&ВыполнениеКоманды +Процедура ВыполнениеКоманды() Экспорт + Если ВыводитьВсеВерсии Тогда - ВывестиВсеВерсии(ТихийРежим); + ВывестиВсеВерсии(); ИначеЕсли ВыводитьСписокВерсийНаСайте Тогда - ВывестиСписокДоступныхКУстановкеВерсий(ТихийРежим); + ВывестиСписокДоступныхКУстановкеВерсий(); Иначе - ВывестиСписокУстановленныхВерсий(ТихийРежим); + ВывестиСписокУстановленныхВерсий(); КонецЕсли; КонецПроцедуры -Процедура ВывестиВсеВерсии(Знач ТихийРежим) +Процедура ВывестиВсеВерсии() ВсеВерсии = ВерсииOneScript.ПолучитьСписокВсехВерсий(); @@ -71,7 +71,7 @@ СтатусСообщения.Информация, СтатусСообщения.БезСтатуса ); - Аппендер = ПараметрыOVM.ПолучитьОсновнойСпособВывода(); + Аппендер.УстановитьСвойство("message-status", УстанавливаемыйСтатусСообщения); Лог.Информация(Сообщение); @@ -79,7 +79,7 @@ КонецПроцедуры -Процедура ВывестиСписокУстановленныхВерсий(Знач ТихийРежим) +Процедура ВывестиСписокУстановленныхВерсий() СписокУстановленныхВерсий = ВерсииOneScript.ПолучитьСписокУстановленныхВерсий(); Для Каждого УстановленнаяВерсия Из СписокУстановленныхВерсий Цикл @@ -103,14 +103,14 @@ СтатусСообщения.Информация, СтатусСообщения.БезСтатуса ); - Аппендер = ПараметрыOVM.ПолучитьОсновнойСпособВывода(); + Аппендер.УстановитьСвойство("message-status", УстанавливаемыйСтатусСообщения); Лог.Информация(Сообщение); КонецЦикла; КонецПроцедуры -Процедура ВывестиСписокДоступныхКУстановкеВерсий(Знач ТихийРежим) +Процедура ВывестиСписокДоступныхКУстановкеВерсий() СписокДоступныВерсий = ВерсииOneScript.ПолучитьСписокДоступныхКУстановкеВерсий(); Для Каждого ДоступнаяВерсия Из СписокДоступныВерсий Цикл @@ -123,5 +123,3 @@ КонецЦикла; КонецПроцедуры - -Лог = ПараметрыOVM.ПолучитьЛог(); diff --git "a/src/cmd/\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\260Run.os" "b/src/cmd/\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\260Run.os" index d86e495..dee13d3 100644 --- "a/src/cmd/\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\260Run.os" +++ "b/src/cmd/\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\260Run.os" @@ -2,49 +2,40 @@ Перем ЭтоWindows; -// Заполняет описание команды для библиотеки cli -// -// Параметры: -// КомандаПриложения - КомандаПриложения - Настраиваемая команда -// -Процедура ОписаниеКоманды(КомандаПриложения) Экспорт - - КомандаПриложения - .Аргумент( - "VERSION", - "current", - "Используемое окружение OneScript. " + - "Допустимо использовать трехномерные версии (1.0.17, 1.0.18), stable, dev, current") - .ВОкружении("OVM_RUN_VERSION"); - - КомандаПриложения - .Аргумент("APP", "oscript", "Используемое приложение. Например, oscript, opm, vrunner...") - .ВОкружении("OVM_RUN_APP"); - - КомандаПриложения - .Аргумент("ARGS", "", "Аргументы, передаваемые приложению").ТМассивСтрок() - .ВОкружении("OVM_RUN_ARGS"); - - // TODO: Убрать, после реализации https://github.com/khorevaa/cli/issues/10 - КомандаПриложения.Спек = "VERSION APP [-- ARGS...]"; - +&Пластилин +Перем ПараметрыOVM; + +&Аргумент( + Имя = "VERSION", + Описание = "Используемое окружение OneScript. Допустимо использовать трехномерные версии (1.0.17, 1.0.18), stable, dev, current" +) +&ПоУмолчанию("current") +&ВОкружении("OVM_RUN_VERSION") +Перем ИспользуемаяВерсия; + +&Аргумент(Имя = "APP", Описание = "Используемое приложение. Например, oscript, opm, vrunner...") +&ПоУмолчанию("oscript") +&ВОкружении("OVM_RUN_APP") +Перем Приложение; + +&Аргумент(Имя = "ARGS", Описание = "Аргументы, передаваемые приложению") +&ПоУмолчанию("") +&ТМассивСтрок +&Обязательный(Ложь) +&ВОкружении("OVM_RUN_ARGS") +Перем Аргументы; + +&КомандаПриложения(Имя = "run r", Описание = "Запустить исполняемый файл в окружении указанной версии OneScript") +Процедура ПриСозданииОбъекта() КонецПроцедуры -// Обработчик выполнения команды -// -// Параметры: -// КомандаПриложения - КомандаПриложения - Выполняемая команда -// -Процедура ВыполнитьКоманду(Знач КомандаПриложения) Экспорт - - ИспользуемаяВерсия = КомандаПриложения.ЗначениеАргумента("VERSION"); - Приложение = КомандаПриложения.ЗначениеАргумента("APP"); - Аргументы = КомандаПриложения.ЗначениеАргумента("ARGS"); +&ВыполнениеКоманды +Процедура ВыполнениеКоманды() Экспорт КаталогУстановки = ПараметрыOVM.КаталогУстановкиПоУмолчанию(); КаталогУстановкиВерсии = ОбъединитьПути(КаталогУстановки, ИспользуемаяВерсия); КаталогBin = ОбъединитьПути(КаталогУстановкиВерсии, "bin"); - + ПеременнаяPATH = ПолучитьПеременнуюСреды("PATH"); Если ЭтоWindows Тогда ПеременнаяPATH = КаталогBin + ";" + ПеременнаяPATH; @@ -53,13 +44,13 @@ КонецЕсли; УстановитьПеременнуюСреды("PATH", ПеременнаяPATH, РасположениеПеременнойСреды.Процесс); - + Команда = Новый Команда; Команда.УстановитьИсполнениеЧерезКомандыСистемы(Ложь); Команда.УстановитьКоманду(Приложение); Команда.ДобавитьПараметры(Аргументы); Команда.ПоказыватьВыводНемедленно(Истина); - + Команда.Исполнить(); КонецПроцедуры diff --git "a/src/cmd/\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\260Uninstall.os" "b/src/cmd/\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\260Uninstall.os" index 32bfe9b..0f57a80 100644 --- "a/src/cmd/\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\260Uninstall.os" +++ "b/src/cmd/\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\260Uninstall.os" @@ -1,50 +1,41 @@ +&ЛогOVM Перем Лог; -// Заполняет описание команды для библиотеки cli -// -// Параметры: -// КомандаПриложения - КомандаПриложения - Настраиваемая команда -// -Процедура ОписаниеКоманды(КомандаПриложения) Экспорт - - КомандаПриложения - .Опция("force f", Ложь, "Удалять даже текущую используемую версию") - .ВОкружении("OVM_UNINSTALL_FORCE"); - - КомандаПриложения - .Опция("all a", Ложь, "Удаление всех установленных версий OneScript") - .ВОкружении("OVM_UNINSTALL_ALL"); - - КомандаПриложения - .Аргумент( - "VERSION", - , - "Удаляемая версия (версии) OneScript. " + - "Допустимо использовать трехномерные версии (1.0.17, 1.0.18), stable, dev. " + - "Может быть передано несколько значений") - .ВОкружении("OVM_UNINSTALL_VERSION") - .ТМассивСтрок(); - - КомандаПриложения.Спек = "[--force] [--all] [VERSION...]"; +&Пластилин +Перем ДеинсталляторOneScript; + +&Пластилин +Перем ВерсииOneScript; + +&Аргумент( + Имя = "VERSION", + Описание = "Удаляемая версия (версии) OneScript. Допустимо использовать трехномерные версии (1.0.17, 1.0.18), stable, dev. Может быть передано несколько значений" +) +&ТМассивСтрок +&ВОкружении("OVM_UNINSTALL_VERSION") +Перем МассивВерсийКУдалению; + +&Опция(Имя = "force f", Описание = "Удалять даже текущую используемую версию") +&ПоУмолчанию(Ложь) +&ВОкружении("OVM_UNINSTALL_FORCE") +Перем УдалятьТекущуюВерсию; + +&Опция(Имя = "all a", Описание = "Удаление всех установленных версий OneScript") +&ПоУмолчанию(Ложь) +&ВОкружении("OVM_UNINSTALL_ALL") +Перем УдалятьВсеВерсии; + +&КомандаПриложения(Имя = "uninstall delete d", Описание = "Удалить OneScript указанных версий") +Процедура ПриСозданииОбъекта() КонецПроцедуры -// Обработчик выполнения команды -// -// Параметры: -// КомандаПриложения - КомандаПриложения - Выполняемая команда -// -Процедура ВыполнитьКоманду(Знач КомандаПриложения) Экспорт - - МассивВерсийКУдалению = КомандаПриложения.ЗначениеАргумента("VERSION"); - УдалятьТекущуюВерсию = КомандаПриложения.ЗначениеОпции("force"); - УдалятьВсеВерсии = КомандаПриложения.ЗначениеОпции("all"); - - ДеинсталляторOneScript = Новый ДеинсталляторOneScript(); - +&ВыполнениеКоманды +Процедура ВыполнениеКоманды() Экспорт + Если УдалятьВсеВерсии Тогда ДеинсталляторOneScript.УдалитьВсеВерсииOneScript(); Иначе - + Для Каждого ВерсияКУдалению Из МассивВерсийКУдалению Цикл Если ВерсииOneScript.ЭтоТекущаяВерсия(ВерсияКУдалению) И НЕ УдалятьТекущуюВерсию Тогда Лог.Информация("Версия <%1> не удалена, т.к. является текущей.", ВерсияКУдалению); @@ -52,9 +43,7 @@ КонецЕсли; ДеинсталляторOneScript.УдалитьOneScript(ВерсияКУдалению); КонецЦикла; - + КонецЕсли; - -КонецПроцедуры -Лог = ПараметрыOVM.ПолучитьЛог(); +КонецПроцедуры diff --git "a/src/cmd/\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\260Use.os" "b/src/cmd/\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\260Use.os" index 0c88fcb..a8eb916 100644 --- "a/src/cmd/\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\260Use.os" +++ "b/src/cmd/\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\260Use.os" @@ -1,38 +1,21 @@ -#Использовать fs +&Пластилин +Перем АктиваторOneScript; -Перем ЭтоWindows; +&Аргумент(Имя = "VERSION", Описание = "Используемая версия OneScript. Допустимо использовать трехномерные версии (1.0.17, 1.0.18), stable, dev") +&ВОкружении("OVM_USE_VERSION") +&ТСтрока +Перем ИспользуемаяВерсия; -// Заполняет описание команды для библиотеки cli -// -// Параметры: -// КомандаПриложения - КомандаПриложения - Настраиваемая команда -// -Процедура ОписаниеКоманды(КомандаПриложения) Экспорт - - КомандаПриложения - .Опция("install i", Ложь, "Выполнять установку требуемой версии в случае ее отсутствия") - .ВОкружении("OVM_USE_INSTALL"); - - КомандаПриложения - .Аргумент( - "VERSION", - , - "Используемая версия OneScript. Допустимо использовать трехномерные версии (1.0.17, 1.0.18), stable, dev") - .ВОкружении("OVM_USE_VERSION") - .ТСтрока(); +&Опция(Имя = "install i", Описание = "Выполнять установку требуемой версии в случае ее отсутствия") +&ПоУмолчанию(Ложь) +&ВОкружении("OVM_USE_INSTALL") +Перем ВыполнятьУстановкуПриНеобходимости; +&КомандаПриложения(Имя = "use u", Описание = "Использовать OneScript указанной версии") +Процедура ПриСозданииОбъекта() КонецПроцедуры -// Обработчик выполнения команды -// -// Параметры: -// КомандаПриложения - КомандаПриложения - Выполняемая команда -// -Процедура ВыполнитьКоманду(Знач КомандаПриложения) Экспорт - ИспользуемаяВерсия = КомандаПриложения.ЗначениеАргумента("VERSION"); - ВыполнятьУстановкуПриНеобходимости = КомандаПриложения.ЗначениеОпции("install"); - - АктиваторOneScript = Новый АктиваторOneScript(); +&ВыполнениеКоманды +Процедура ВыполнениеКоманды() Экспорт АктиваторOneScript.ИспользоватьВерсиюOneScript(ИспользуемаяВерсия, ВыполнятьУстановкуПриНеобходимости); - КонецПроцедуры diff --git "a/src/cmd/\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\260Which.os" "b/src/cmd/\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\260Which.os" index 891165d..baf35d2 100644 --- "a/src/cmd/\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\260Which.os" +++ "b/src/cmd/\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\260Which.os" @@ -1,38 +1,27 @@ #Использовать "../../core" +&ЛогOVM Перем Лог; -// Заполняет описание команды для библиотеки cli -// -// Параметры: -// КомандаПриложения - КомандаПриложения - Настраиваемая команда -// -Процедура ОписаниеКоманды(КомандаПриложения) Экспорт - - КомандаПриложения - .Аргумент( - "VERSION", - "current", - "Искомая версия OneScript. Допустимо использовать трехномерные версии (1.0.17, 1.0.18), stable, dev" - ) - .ВОкружении("OVM_WHICH_VERSION") - .ТСтрока(); - -КонецПроцедуры +&Пластилин +Перем ВерсииOneScript; -// Обработчик выполнения команды -// -// Параметры: -// КомандаПриложения - КомандаПриложения - Выполняемая команда -// -Процедура ВыполнитьКоманду(Знач КомандаПриложения) Экспорт +&Аргумент(Имя = "VERSION", Описание = "Искомая версия OneScript. Допустимо использовать трехномерные версии (1.0.17, 1.0.18), stable, dev") +&ПоУмолчанию("current") +&Обязательный(Ложь) +&ВОкружении("OVM_WHICH_VERSION") +&ТСтрока +Перем ИскомаяВерсия; - ИскомаяВерсия = КомандаПриложения.ЗначениеАргумента("VERSION"); +&КомандаПриложения(Имя = "which w", Описание = "Вывести путь к установленной версии OneScript") +Процедура ПриСозданииОбъекта() +КонецПроцедуры - ПутьКУстановленнойВерсии = ВерсииOneScript.ПолучитьПутьКУстановленномуДвижкуOneScript(ИскомаяВерсия); +&ВыполнениеКоманды +Процедура ВыполнениеКоманды() Экспорт - Лог.Информация(ПутьКУстановленнойВерсии); + Лог.Информация( + ВерсииOneScript.ПолучитьПутьКУстановленномуДвижкуOneScript(ИскомаяВерсия) + ); КонецПроцедуры - -Лог = ПараметрыOVM.ПолучитьЛог(); diff --git "a/src/cmd/\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\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" "b/src/cmd/\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\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 a955388..0000000 --- "a/src/cmd/\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\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" +++ /dev/null @@ -1,18 +0,0 @@ -// Имя приложения -// -// Возвращаемое значение: -// Строка - Имя приложения -// -Функция ИмяПриложения() Экспорт - Возврат "ovm"; -КонецФункции - -// Версия приложения -// -// Возвращаемое значение: -// Строка - Строковое представление версии -// -Функция Версия() Экспорт - Версия = "1.0.0-RC15"; - Возврат Версия; -КонецФункции diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\272\321\202\320\270\320\262\320\260\321\202\320\276\321\200OneScript.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\272\321\202\320\270\320\262\320\260\321\202\320\276\321\200OneScript.os" index bb74215..3fe9834 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\272\321\202\320\270\320\262\320\260\321\202\320\276\321\200OneScript.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\272\321\202\320\270\320\262\320\260\321\202\320\276\321\200OneScript.os" @@ -3,8 +3,20 @@ Перем СистемнаяИнформация; Перем ЭтоWindows; + +&ЛогOVM Перем Лог; +&Пластилин +Перем ПараметрыOVM; + +&Пластилин +Перем ВерсииOneScript; + +&Желудь +Процедура ПриСозданииОбъекта() +КонецПроцедуры + // Активирует указанную версию OneScript. // Создает необходимые симлинки и оперирует PATH. // @@ -413,4 +425,3 @@ СистемнаяИнформация = Новый СистемнаяИнформация; ЭтоWindows = Найти(ВРег(СистемнаяИнформация.ВерсияОС), "WINDOWS") > 0; -Лог = ПараметрыOVM.ПолучитьЛог(); diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\233\320\276\320\263OVM.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\233\320\276\320\263OVM.os" new file mode 100644 index 0000000..d49179c --- /dev/null +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\233\320\276\320\263OVM.os" @@ -0,0 +1,4 @@ +&Аннотация("ЛогOVM") +&Лог("oscript.app.ovm") +Процедура ПриСозданииОбъекта() +КонецПроцедуры diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\277\320\277\320\265\320\275\320\264\320\265\321\200\320\233\320\276\320\263OVM.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\277\320\277\320\265\320\275\320\264\320\265\321\200\320\233\320\276\320\263OVM.os" new file mode 100644 index 0000000..5791710 --- /dev/null +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\277\320\277\320\265\320\275\320\264\320\265\321\200\320\233\320\276\320\263OVM.os" @@ -0,0 +1,54 @@ +////////////////////////////////////////////////////////////////////////// +// +// LOGOS: вывод в консоль +// +////////////////////////////////////////////////////////////////////////// + +Перем КартаСтатусовИУровней Экспорт; +Перем УстанавливаемыйСтатусСообщения Экспорт; + +// Вывести сообщение через аппендер +// +// Параметры: +// Сообщение - Строка - Выводимое сообщение +// УровеньСообщения - Число - Числовое представление УровниЛога. +// +Процедура Вывести(Знач Сообщение, УровеньСообщения) Экспорт + + ПередаваемыйСтатусСообщения = ?(УстанавливаемыйСтатусСообщения = Неопределено, + КартаСтатусовИУровней[УровеньСообщения], + УстанавливаемыйСтатусСообщения + ); + Сообщить(Сообщение, ПередаваемыйСтатусСообщения); + +КонецПроцедуры + +// Закрыть аппендер +// +Процедура Закрыть() Экспорт + // NO-OP +КонецПроцедуры + +// Устанавливает свойство аппендера, заданное в конфигурационном файле +// +// Параметры: +// ИмяСвойства - Строка - Имя свойства +// Значение - Произвольный - Значение свойства +// +Процедура УстановитьСвойство(Знач ИмяСвойства, Знач Значение) Экспорт + Если ИмяСвойства = "message-status" Тогда + УстанавливаемыйСтатусСообщения = Значение; + КонецЕсли; +КонецПроцедуры // УстановитьСвойство() + +&Желудь +Процедура ПриСозданииОбъекта() + + КартаСтатусовИУровней = Новый Соответствие; + КартаСтатусовИУровней.Вставить(УровниЛога.Отладка, СтатусСообщения.БезСтатуса); + КартаСтатусовИУровней.Вставить(УровниЛога.Информация, СтатусСообщения.Обычное); + КартаСтатусовИУровней.Вставить(УровниЛога.Предупреждение, СтатусСообщения.Внимание); + КартаСтатусовИУровней.Вставить(УровниЛога.Ошибка, СтатусСообщения.Важное); + КартаСтатусовИУровней.Вставить(УровниЛога.КритичнаяОшибка, СтатусСообщения.ОченьВажное); + +КонецПроцедуры diff --git "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" similarity index 94% rename from "src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" rename to "src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" index d554202..5ce9edc 100644 --- "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" @@ -1,386 +1,393 @@ -#Использовать 1commands -#Использовать fluent -#Использовать fs -#Использовать logos - -Перем Лог; -Перем ЭтоWindows; - -// Проверить, что версия установлена -// -// Параметры: -// ПроверяемаяВерсия - Строка - Алиас версии -// -// Возвращаемое значение: -// Булево - Версия установлена -// -Функция ВерсияУстановлена(Знач ПроверяемаяВерсия) Экспорт - - КаталогУстановки = ПараметрыOVM.КаталогУстановкиПоУмолчанию(); - КаталогУстановкиВерсии = ОбъединитьПути(КаталогУстановки, ПроверяемаяВерсия); - - СуществуетКаталогУстановкиВерсии = ФС.КаталогСуществует(КаталогУстановкиВерсии); - СуществуетOscriptExe = ФС.ФайлСуществует(ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript.exe")); - ЭтоКаталогВерсии2 = ЭтоКаталогВерсии2(КаталогУстановкиВерсии); - Результат = СуществуетКаталогУстановкиВерсии И (СуществуетOscriptExe ИЛИ ЭтоКаталогВерсии2); - - Лог.Отладка("Версия %1 установлена: %2", ПроверяемаяВерсия, Результат); - Возврат Результат; - -КонецФункции - -// Проверить, что переданная версия является текущей (активированной) -// -// Параметры: -// ПроверяемаяВерсия - Строка - Алиас -// -// Возвращаемое значение: -// Булево - Это текущая версия -// -Функция ЭтоТекущаяВерсия(Знач ПроверяемаяВерсия) Экспорт - - Если ПроверяемаяВерсия = "current" Тогда - Возврат Истина; - КонецЕсли; - - Если НЕ ВерсияУстановлена("current") Тогда - Возврат Ложь; - КонецЕсли; - - Если НЕ ВерсияУстановлена(ПроверяемаяВерсия) Тогда - Возврат Ложь; - КонецЕсли; - - АлиасыСимлинков = ПолучитьАлиасыСимлинков(); - - ТекущаяВерсия = АлиасыСимлинков["current"]; - - Возврат ПроверяемаяВерсия = ТекущаяВерсия; - -КонецФункции - -// Проверяет, что переданный каталог является каталогом OneScript 2.0+ -// -// Параметры: -// КаталогУстановкиВерсии - Строка - Путь к конкретной версии. -// -// Возвращаемое значение: -// Булево -// -Функция ЭтоКаталогВерсии2(КаталогУстановкиВерсии) Экспорт - Возврат ФС.ФайлСуществует(ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript.dll")); -КонецФункции - -// Получает путь к исполняемому файлу OneScript по шаблону версии 1.x. -// -// Параметры: -// КаталогУстановкиВерсии - Строка - Путь к конкретной версии. -// -// Возвращаемое значение: -// Строка - Путь к исполняемому файлу. -// -Функция ПутьКИсполняемомуФайлуВерсии1(КаталогУстановкиВерсии) Экспорт - - ПутьКИсполняемомуФайлу = ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript"); - Если ЭтоWindows Тогда - ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлу + ".exe"; - КонецЕсли; - - Возврат ПутьКИсполняемомуФайлу; - -КонецФункции - -// Получает путь к исполняемому файлу OneScript по шаблону версии 1.x. -// -// Параметры: -// КаталогУстановкиВерсии - Строка - Путь к конкретной версии. -// -// Возвращаемое значение: -// Строка - Путь к исполняемому файлу. -// -Функция ПутьКИсполняемомуФайлуВерсии2(КаталогУстановкиВерсии) Экспорт - - ПутьКИсполняемомуФайлу = ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript"); - Если ЭтоWindows Тогда - ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлу + ".bat"; - КонецЕсли; - - Возврат ПутьКИсполняемомуФайлу; - -КонецФункции - -// Получить информацию об установленных версиях -// -// Возвращаемое значение: -// ТаблицаЗначений - Информация об установленных версиях: -// * Алиас - Строка - Алиас версии (имя каталога) -// * Путь - Строка - Полный путь к каталогу версии -// * Версия - Строка - Точная версия OneScript -// * ЭтоСимлинк - Булево - Каталог является символической ссылкой -// -Функция ПолучитьСписокУстановленныхВерсий() Экспорт - - УстановленныеВерсии = Новый ТаблицаЗначений; - УстановленныеВерсии.Колонки.Добавить("Алиас"); - УстановленныеВерсии.Колонки.Добавить("Путь"); - УстановленныеВерсии.Колонки.Добавить("Версия"); - УстановленныеВерсии.Колонки.Добавить("ЭтоСимлинк"); - - АлиасыСимлинков = ПолучитьАлиасыСимлинков(); - - КаталогУстановки = ПараметрыOVM.КаталогУстановкиПоУмолчанию(); - НайденныеФайлы = НайтиФайлы(КаталогУстановки, ПолучитьМаскуВсеФайлы()); - Для Каждого НайденныйФайл Из НайденныеФайлы Цикл - Если НЕ ВерсияУстановлена(НайденныйФайл.Имя) Тогда - Продолжить; - КонецЕсли; - - СтрокаВерсии = УстановленныеВерсии.Добавить(); - СтрокаВерсии.Алиас = НайденныйФайл.Имя; - СтрокаВерсии.Путь = НайденныйФайл.ПолноеИмя; - СтрокаВерсии.Версия = ПолучитьТочнуюВерсиюOneScript(СтрокаВерсии.Алиас); - СтрокаВерсии.ЭтоСимлинк = АлиасыСимлинков.Получить(НайденныйФайл.Имя) <> Неопределено; - - КонецЦикла; - - Возврат УстановленныеВерсии; - -КонецФункции - -Функция ПолучитьАлиасыСимлинков() - - КаталогУстановки = ПараметрыOVM.КаталогУстановкиПоУмолчанию(); - - Команда = Новый Команда(); - - Если ЭтоWindows Тогда - Команда.УстановитьКоманду("dir"); - Иначе - Команда.УстановитьКоманду("ls"); - Команда.ДобавитьПараметр("-la"); - КонецЕсли; - Команда.ДобавитьПараметр(КаталогУстановки); - - Команда.Исполнить(); - - ВыводКоманды = Команда.ПолучитьВывод(); - - Если ЭтоWindows Тогда - Выражение = "(|)\s*(.+?)\s*\[(.+)\]"; - Иначе - Выражение = "l.+?(\d\d:\d\d)\s*(.+?)\s*->\s*(.+)"; - КонецЕсли; - - РВ = Новый РегулярноеВыражение(Выражение); - РВ.МногоСтрочный = Ложь; - Совпадения = РВ.НайтиСовпадения(ВыводКоманды); - - АлиасыСимлинков = Новый Соответствие; - РазделительПути = ПолучитьРазделительПути(); - - Для Каждого Совпадение Из Совпадения Цикл - Группы = Совпадение.Группы; - ЧастиПути = СтрРазделить(Группы[3].Значение, РазделительПути); - АлиасыСимлинков.Вставить(Группы[2].Значение, ЧастиПути[ЧастиПути.ВГраница()]); - КонецЦикла; - - Возврат АлиасыСимлинков; - -КонецФункции - -// Получить информацию о версиях, доступных к установке -// -// Возвращаемое значение: -// ТаблицаЗначений - Информация об установленных версиях: -// * Алиас - Строка - Алиас версии (имя каталога) -// * Путь - Строка - Полный путь к каталогу версии -// -Функция ПолучитьСписокДоступныхКУстановкеВерсий() Экспорт - - ДоступныеВерсии = Новый ТаблицаЗначений; - ДоступныеВерсии.Колонки.Добавить("Алиас"); - ДоступныеВерсии.Колонки.Добавить("Путь"); - - АдресСайтаОСкрипт = ПараметрыOVM.АдресСайтаОСкрипт(); - - Таймаут = 10; - Соединение = Новый HTTPСоединение( - АдресСайтаОСкрипт, - , - , - , - , - Таймаут - ); - Запрос = Новый HTTPЗапрос("downloads"); - - Ответ = Соединение.Получить(Запрос); - HTTP_OK = 200; - Если Ответ.КодСостояния <> HTTP_OK Тогда - ВызватьИсключение Ответ.КодСостояния; - КонецЕсли; - - ТелоСтраницы = Ответ.ПолучитьТелоКакСтроку(); - - РегулярноеВыражение = Новый РегулярноеВыражение("(\d+\.\d+\.\d+(\.\d+)?)"); - ИндексГруппыАдрес = 1; - ИндексГруппыВерсия = 2; - - Совпадения = РегулярноеВыражение.НайтиСовпадения(ТелоСтраницы); - Для Каждого СовпадениеРегулярногоВыражения Из Совпадения Цикл - ГруппаАдрес = СовпадениеРегулярногоВыражения.Группы[ИндексГруппыАдрес]; - ГруппаВерсия = СовпадениеРегулярногоВыражения.Группы[ИндексГруппыВерсия]; - - // TODO: Убрать после решения https://github.com/EvilBeaver/OneScript/issues/667 - Если ГруппаВерсия.Значение = "1.0.9" Тогда - Продолжить; - КонецЕсли; - - ДоступнаяВерсия = ДоступныеВерсии.Добавить(); - ДоступнаяВерсия.Алиас = ГруппаВерсия.Значение; - ДоступнаяВерсия.Путь = АдресСайтаОСкрипт + ГруппаАдрес.Значение; - КонецЦикла; - - ОбеспечитьСтрокуВерсииПоАлиасу(ДоступныеВерсии, "dev", "Путь"); - ОбеспечитьСтрокуВерсииПоАлиасу(ДоступныеВерсии, "stable", "Путь"); - - Возврат ДоступныеВерсии; - -КонецФункции - -// <Описание функции> -// -// Возвращаемое значение: -// ТаблицаЗначений - Информация об установленных версиях: -// * Алиас - Строка - Алиас версии (имя каталога) -// * ПутьЛокальный - Строка - Полный путь к каталогу версии -// * ПутьСервер - Строка - Полный путь к каталогу версии на сайте OneScript -// * Версия - Строка - Точная версия OneScript (только для установленных версий) -// * ЭтоСимлинк - Булево - Каталог является символической ссылкой -// * ВерсияУстановлена - Булево - Установлена ли текущая версия -// -Функция ПолучитьСписокВсехВерсий() Экспорт - - СписокУстановленныхВерсий = ПолучитьСписокУстановленныхВерсий(); - СписокДоступныхВерсий = ПолучитьСписокДоступныхКУстановкеВерсий(); - - ВсеВерсии = Новый ТаблицаЗначений; - ВсеВерсии.Колонки.Добавить("Алиас", Новый ОписаниеТипов("Строка")); - ВсеВерсии.Колонки.Добавить("Версия", Новый ОписаниеТипов("Строка")); - ВсеВерсии.Колонки.Добавить("ПутьЛокальный", Новый ОписаниеТипов("Строка")); - ВсеВерсии.Колонки.Добавить("ПутьСервер", Новый ОписаниеТипов("Строка")); - ВсеВерсии.Колонки.Добавить("ЭтоСимлинк", Новый ОписаниеТипов("Булево")); - ВсеВерсии.Колонки.Добавить("ВерсияУстановлена", Новый ОписаниеТипов("Булево")); - - Для Каждого ДоступнаяВерсия Из СписокДоступныхВерсий Цикл - СтрокаВсеВерсии = ВсеВерсии.Найти(ДоступнаяВерсия.Алиас, "Алиас"); - Если СтрокаВсеВерсии = Неопределено Тогда - СтрокаВсеВерсии = ВсеВерсии.Добавить(); - СтрокаВсеВерсии.Алиас = ДоступнаяВерсия.Алиас; - СтрокаВсеВерсии.ЭтоСимлинк = Ложь; - КонецЕсли; - - СтрокаВсеВерсии.ПутьСервер = ДоступнаяВерсия.Путь; - КонецЦикла; - - Для Каждого УстановленнаяВерсия Из СписокУстановленныхВерсий Цикл - СтрокаВсеВерсии = ВсеВерсии.Найти(УстановленнаяВерсия.Алиас, "Алиас"); - Если СтрокаВсеВерсии = Неопределено Тогда - СтрокаВсеВерсии = ВсеВерсии.Добавить(); - СтрокаВсеВерсии.Алиас = УстановленнаяВерсия.Алиас; - СтрокаВсеВерсии.ЭтоСимлинк = УстановленнаяВерсия.ЭтоСимлинк; - КонецЕсли; - - СтрокаВсеВерсии.Версия = УстановленнаяВерсия.Версия; - СтрокаВсеВерсии.ПутьЛокальный = УстановленнаяВерсия.Путь; - СтрокаВсеВерсии.ВерсияУстановлена = Истина; - КонецЦикла; - - ОбеспечитьСтрокуВерсииПоАлиасу(ВсеВерсии, "dev"); - ОбеспечитьСтрокуВерсииПоАлиасу(ВсеВерсии, "stable"); - - ВсеВерсии.Сортировать("Алиас"); - - Возврат ВсеВерсии; - -КонецФункции - -// Получить полный путь к исполняемому файлу OneScript (файлу oscript.exe|oscript.bat|oscript) -// -// Параметры: -// УстановленнаяВерсия - Строка - Алиас проверяемой версии -// -// Возвращаемое значение: -// Строка - Полный путь к исполняемому файлу oscript -// -Функция ПолучитьПутьКУстановленномуДвижкуOneScript(Знач УстановленнаяВерсия) Экспорт - - УстановленныеВерсии = ПолучитьСписокУстановленныхВерсий(); - - ПутьКУстановленнойВерсии = ПроцессорыКоллекций.ИзКоллекции(УстановленныеВерсии) - .Фильтровать( - "Результат = Элемент.Алиас = ДополнительныеПараметры.УстановленнаяВерсия", - Новый Структура("УстановленнаяВерсия", УстановленнаяВерсия)) - .Первые(1) - .Обработать(" - |Если ВерсииOneScript.ЭтоКаталогВерсии2(Элемент.Путь) Тогда - | Результат = ВерсииOneScript.ПутьКИсполняемомуФайлуВерсии2(Элемент.Путь); - |Иначе - | Результат = ВерсииOneScript.ПутьКИсполняемомуФайлуВерсии1(Элемент.Путь); - |КонецЕсли; - |") - .ПолучитьПервый(); - - Возврат ПутьКУстановленнойВерсии; - -КонецФункции - -Процедура ОбеспечитьСтрокуВерсииПоАлиасу(ТаблицаВерсий, Алиас, ИмяРеквизитаПуть = "ПутьСервер") - - СтрокаВерсии = ТаблицаВерсий.Найти(Алиас, "Алиас"); - - Если СтрокаВерсии = Неопределено Тогда - СтрокаВерсии = ТаблицаВерсий.Добавить(); - СтрокаВерсии.Алиас = Алиас; - КонецЕсли; - - СтрокаВерсии[ИмяРеквизитаПуть] = ПараметрыOVM.ПолныйАдресККаталогуДистрибутивов(); - -КонецПроцедуры - -Функция ПолучитьТочнуюВерсиюOneScript(Знач ПроверяемаяВерсия) - - КаталогУстановки = ПараметрыOVM.КаталогУстановкиПоУмолчанию(); - КаталогУстановкиВерсии = ОбъединитьПути(КаталогУстановки, ПроверяемаяВерсия); - ЭтоКаталогВерсии2 = ЭтоКаталогВерсии2(КаталогУстановкиВерсии); - Если ЭтоКаталогВерсии2 Тогда - ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлуВерсии2(КаталогУстановкиВерсии); - Иначе - ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлуВерсии1(КаталогУстановкиВерсии); - КонецЕсли; - - Команда = Новый Команда(); - Команда.УстановитьКоманду(ПутьКИсполняемомуФайлу); - Команда.ДобавитьПараметр("-version"); - - Команда.Исполнить(); - - ВыводКоманды = СокрЛП(Команда.ПолучитьВывод()); - Если СтрЧислоСтрок(ВыводКоманды) > 1 Тогда - РегулярноеВыражение = Новый РегулярноеВыражение("Version (\d+\.\d+\.\d+\.\d+)"); - Совпадения = РегулярноеВыражение.НайтиСовпадения(ВыводКоманды); - Если Совпадения.Количество() = 1 Тогда - ВыводКоманды = Совпадения[0].Группы[1].Значение; - Иначе - ВыводКоманды = "unknown"; - КонецЕсли; - КонецЕсли; - - Возврат ВыводКоманды; - -КонецФункции - -СистемнаяИнформация = Новый СистемнаяИнформация; -ЭтоWindows = Найти(ВРег(СистемнаяИнформация.ВерсияОС), "WINDOWS") > 0; -// TODO: После фикса движка вернуться на получение лога из ПараметровOVM -Лог = Логирование.ПолучитьЛог("oscript.app.ovm"); +#Использовать 1commands +#Использовать fluent +#Использовать fs + +&ЛогOVM +Перем Лог; + +&Пластилин +Перем ПараметрыOVM; + +Перем ЭтоWindows; + +&Желудь +Процедура ПриСозданииОбъекта() +КонецПроцедуры + +// Проверить, что версия установлена +// +// Параметры: +// ПроверяемаяВерсия - Строка - Алиас версии +// +// Возвращаемое значение: +// Булево - Версия установлена +// +Функция ВерсияУстановлена(Знач ПроверяемаяВерсия) Экспорт + + КаталогУстановки = ПараметрыOVM.КаталогУстановкиПоУмолчанию(); + КаталогУстановкиВерсии = ОбъединитьПути(КаталогУстановки, ПроверяемаяВерсия); + + СуществуетКаталогУстановкиВерсии = ФС.КаталогСуществует(КаталогУстановкиВерсии); + СуществуетOscriptExe = ФС.ФайлСуществует(ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript.exe")); + ЭтоКаталогВерсии2 = ЭтоКаталогВерсии2(КаталогУстановкиВерсии); + Результат = СуществуетКаталогУстановкиВерсии И (СуществуетOscriptExe ИЛИ ЭтоКаталогВерсии2); + + Лог.Отладка("Версия %1 установлена: %2", ПроверяемаяВерсия, Результат); + Возврат Результат; + +КонецФункции + +// Проверить, что переданная версия является текущей (активированной) +// +// Параметры: +// ПроверяемаяВерсия - Строка - Алиас +// +// Возвращаемое значение: +// Булево - Это текущая версия +// +Функция ЭтоТекущаяВерсия(Знач ПроверяемаяВерсия) Экспорт + + Если ПроверяемаяВерсия = "current" Тогда + Возврат Истина; + КонецЕсли; + + Если НЕ ВерсияУстановлена("current") Тогда + Возврат Ложь; + КонецЕсли; + + Если НЕ ВерсияУстановлена(ПроверяемаяВерсия) Тогда + Возврат Ложь; + КонецЕсли; + + АлиасыСимлинков = ПолучитьАлиасыСимлинков(); + + ТекущаяВерсия = АлиасыСимлинков["current"]; + + Возврат ПроверяемаяВерсия = ТекущаяВерсия; + +КонецФункции + +// Проверяет, что переданный каталог является каталогом OneScript 2.0+ +// +// Параметры: +// КаталогУстановкиВерсии - Строка - Путь к конкретной версии. +// +// Возвращаемое значение: +// Булево +// +Функция ЭтоКаталогВерсии2(КаталогУстановкиВерсии) Экспорт + Возврат ФС.ФайлСуществует(ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript.dll")); +КонецФункции + +// Получает путь к исполняемому файлу OneScript по шаблону версии 1.x. +// +// Параметры: +// КаталогУстановкиВерсии - Строка - Путь к конкретной версии. +// +// Возвращаемое значение: +// Строка - Путь к исполняемому файлу. +// +Функция ПутьКИсполняемомуФайлуВерсии1(КаталогУстановкиВерсии) Экспорт + + ПутьКИсполняемомуФайлу = ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript"); + Если ЭтоWindows Тогда + ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлу + ".exe"; + КонецЕсли; + + Возврат ПутьКИсполняемомуФайлу; + +КонецФункции + +// Получает путь к исполняемому файлу OneScript по шаблону версии 1.x. +// +// Параметры: +// КаталогУстановкиВерсии - Строка - Путь к конкретной версии. +// +// Возвращаемое значение: +// Строка - Путь к исполняемому файлу. +// +Функция ПутьКИсполняемомуФайлуВерсии2(КаталогУстановкиВерсии) Экспорт + + ПутьКИсполняемомуФайлу = ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript"); + Если ЭтоWindows Тогда + ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлу + ".bat"; + КонецЕсли; + + Возврат ПутьКИсполняемомуФайлу; + +КонецФункции + +// Получить информацию об установленных версиях +// +// Возвращаемое значение: +// ТаблицаЗначений - Информация об установленных версиях: +// * Алиас - Строка - Алиас версии (имя каталога) +// * Путь - Строка - Полный путь к каталогу версии +// * Версия - Строка - Точная версия OneScript +// * ЭтоСимлинк - Булево - Каталог является символической ссылкой +// +Функция ПолучитьСписокУстановленныхВерсий() Экспорт + + УстановленныеВерсии = Новый ТаблицаЗначений; + УстановленныеВерсии.Колонки.Добавить("Алиас"); + УстановленныеВерсии.Колонки.Добавить("Путь"); + УстановленныеВерсии.Колонки.Добавить("Версия"); + УстановленныеВерсии.Колонки.Добавить("ЭтоСимлинк"); + + АлиасыСимлинков = ПолучитьАлиасыСимлинков(); + + КаталогУстановки = ПараметрыOVM.КаталогУстановкиПоУмолчанию(); + НайденныеФайлы = НайтиФайлы(КаталогУстановки, ПолучитьМаскуВсеФайлы()); + Для Каждого НайденныйФайл Из НайденныеФайлы Цикл + Если НЕ ВерсияУстановлена(НайденныйФайл.Имя) Тогда + Продолжить; + КонецЕсли; + + СтрокаВерсии = УстановленныеВерсии.Добавить(); + СтрокаВерсии.Алиас = НайденныйФайл.Имя; + СтрокаВерсии.Путь = НайденныйФайл.ПолноеИмя; + СтрокаВерсии.Версия = ПолучитьТочнуюВерсиюOneScript(СтрокаВерсии.Алиас); + СтрокаВерсии.ЭтоСимлинк = АлиасыСимлинков.Получить(НайденныйФайл.Имя) <> Неопределено; + + КонецЦикла; + + Возврат УстановленныеВерсии; + +КонецФункции + +Функция ПолучитьАлиасыСимлинков() + + КаталогУстановки = ПараметрыOVM.КаталогУстановкиПоУмолчанию(); + + Команда = Новый Команда(); + + Если ЭтоWindows Тогда + Команда.УстановитьКоманду("dir"); + Иначе + Команда.УстановитьКоманду("ls"); + Команда.ДобавитьПараметр("-la"); + КонецЕсли; + Команда.ДобавитьПараметр(КаталогУстановки); + + Команда.Исполнить(); + + ВыводКоманды = Команда.ПолучитьВывод(); + + Если ЭтоWindows Тогда + Выражение = "(|)\s*(.+?)\s*\[(.+)\]"; + Иначе + Выражение = "l.+?(\d\d:\d\d)\s*(.+?)\s*->\s*(.+)"; + КонецЕсли; + + РВ = Новый РегулярноеВыражение(Выражение); + РВ.МногоСтрочный = Ложь; + Совпадения = РВ.НайтиСовпадения(ВыводКоманды); + + АлиасыСимлинков = Новый Соответствие; + РазделительПути = ПолучитьРазделительПути(); + + Для Каждого Совпадение Из Совпадения Цикл + Группы = Совпадение.Группы; + ЧастиПути = СтрРазделить(Группы[3].Значение, РазделительПути); + АлиасыСимлинков.Вставить(Группы[2].Значение, ЧастиПути[ЧастиПути.ВГраница()]); + КонецЦикла; + + Возврат АлиасыСимлинков; + +КонецФункции + +// Получить информацию о версиях, доступных к установке +// +// Возвращаемое значение: +// ТаблицаЗначений - Информация об установленных версиях: +// * Алиас - Строка - Алиас версии (имя каталога) +// * Путь - Строка - Полный путь к каталогу версии +// +Функция ПолучитьСписокДоступныхКУстановкеВерсий() Экспорт + + ДоступныеВерсии = Новый ТаблицаЗначений; + ДоступныеВерсии.Колонки.Добавить("Алиас"); + ДоступныеВерсии.Колонки.Добавить("Путь"); + + АдресСайтаОСкрипт = ПараметрыOVM.АдресСайтаОСкрипт(); + + Таймаут = 10; + Соединение = Новый HTTPСоединение( + АдресСайтаОСкрипт, + , + , + , + , + Таймаут + ); + Запрос = Новый HTTPЗапрос("downloads"); + + Ответ = Соединение.Получить(Запрос); + HTTP_OK = 200; + Если Ответ.КодСостояния <> HTTP_OK Тогда + ВызватьИсключение Ответ.КодСостояния; + КонецЕсли; + + ТелоСтраницы = Ответ.ПолучитьТелоКакСтроку(); + + РегулярноеВыражение = Новый РегулярноеВыражение("(\d+\.\d+\.\d+(\.\d+)?)"); + ИндексГруппыАдрес = 1; + ИндексГруппыВерсия = 2; + + Совпадения = РегулярноеВыражение.НайтиСовпадения(ТелоСтраницы); + Для Каждого СовпадениеРегулярногоВыражения Из Совпадения Цикл + ГруппаАдрес = СовпадениеРегулярногоВыражения.Группы[ИндексГруппыАдрес]; + ГруппаВерсия = СовпадениеРегулярногоВыражения.Группы[ИндексГруппыВерсия]; + + // TODO: Убрать после решения https://github.com/EvilBeaver/OneScript/issues/667 + Если ГруппаВерсия.Значение = "1.0.9" Тогда + Продолжить; + КонецЕсли; + + ДоступнаяВерсия = ДоступныеВерсии.Добавить(); + ДоступнаяВерсия.Алиас = ГруппаВерсия.Значение; + ДоступнаяВерсия.Путь = АдресСайтаОСкрипт + ГруппаАдрес.Значение; + КонецЦикла; + + ОбеспечитьСтрокуВерсииПоАлиасу(ДоступныеВерсии, "dev", "Путь"); + ОбеспечитьСтрокуВерсииПоАлиасу(ДоступныеВерсии, "stable", "Путь"); + + Возврат ДоступныеВерсии; + +КонецФункции + +// <Описание функции> +// +// Возвращаемое значение: +// ТаблицаЗначений - Информация об установленных версиях: +// * Алиас - Строка - Алиас версии (имя каталога) +// * ПутьЛокальный - Строка - Полный путь к каталогу версии +// * ПутьСервер - Строка - Полный путь к каталогу версии на сайте OneScript +// * Версия - Строка - Точная версия OneScript (только для установленных версий) +// * ЭтоСимлинк - Булево - Каталог является символической ссылкой +// * ВерсияУстановлена - Булево - Установлена ли текущая версия +// +Функция ПолучитьСписокВсехВерсий() Экспорт + + СписокУстановленныхВерсий = ПолучитьСписокУстановленныхВерсий(); + СписокДоступныхВерсий = ПолучитьСписокДоступныхКУстановкеВерсий(); + + ВсеВерсии = Новый ТаблицаЗначений; + ВсеВерсии.Колонки.Добавить("Алиас", Новый ОписаниеТипов("Строка")); + ВсеВерсии.Колонки.Добавить("Версия", Новый ОписаниеТипов("Строка")); + ВсеВерсии.Колонки.Добавить("ПутьЛокальный", Новый ОписаниеТипов("Строка")); + ВсеВерсии.Колонки.Добавить("ПутьСервер", Новый ОписаниеТипов("Строка")); + ВсеВерсии.Колонки.Добавить("ЭтоСимлинк", Новый ОписаниеТипов("Булево")); + ВсеВерсии.Колонки.Добавить("ВерсияУстановлена", Новый ОписаниеТипов("Булево")); + + Для Каждого ДоступнаяВерсия Из СписокДоступныхВерсий Цикл + СтрокаВсеВерсии = ВсеВерсии.Найти(ДоступнаяВерсия.Алиас, "Алиас"); + Если СтрокаВсеВерсии = Неопределено Тогда + СтрокаВсеВерсии = ВсеВерсии.Добавить(); + СтрокаВсеВерсии.Алиас = ДоступнаяВерсия.Алиас; + СтрокаВсеВерсии.ЭтоСимлинк = Ложь; + КонецЕсли; + + СтрокаВсеВерсии.ПутьСервер = ДоступнаяВерсия.Путь; + КонецЦикла; + + Для Каждого УстановленнаяВерсия Из СписокУстановленныхВерсий Цикл + СтрокаВсеВерсии = ВсеВерсии.Найти(УстановленнаяВерсия.Алиас, "Алиас"); + Если СтрокаВсеВерсии = Неопределено Тогда + СтрокаВсеВерсии = ВсеВерсии.Добавить(); + СтрокаВсеВерсии.Алиас = УстановленнаяВерсия.Алиас; + СтрокаВсеВерсии.ЭтоСимлинк = УстановленнаяВерсия.ЭтоСимлинк; + КонецЕсли; + + СтрокаВсеВерсии.Версия = УстановленнаяВерсия.Версия; + СтрокаВсеВерсии.ПутьЛокальный = УстановленнаяВерсия.Путь; + СтрокаВсеВерсии.ВерсияУстановлена = Истина; + КонецЦикла; + + ОбеспечитьСтрокуВерсииПоАлиасу(ВсеВерсии, "dev"); + ОбеспечитьСтрокуВерсииПоАлиасу(ВсеВерсии, "stable"); + + ВсеВерсии.Сортировать("Алиас"); + + Возврат ВсеВерсии; + +КонецФункции + +// Получить полный путь к исполняемому файлу OneScript (файлу oscript.exe|oscript.bat|oscript) +// +// Параметры: +// УстановленнаяВерсия - Строка - Алиас проверяемой версии +// +// Возвращаемое значение: +// Строка - Полный путь к исполняемому файлу oscript +// +Функция ПолучитьПутьКУстановленномуДвижкуOneScript(Знач УстановленнаяВерсия) Экспорт + + УстановленныеВерсии = ПолучитьСписокУстановленныхВерсий(); + + ПутьКУстановленнойВерсии = ПроцессорыКоллекций.ИзКоллекции(УстановленныеВерсии) + .Фильтровать( + "(Элемент) -> Элемент.Алиас = УстановленнаяВерсия", + Новый Структура("УстановленнаяВерсия", УстановленнаяВерсия) + ) + .Первые(1) + .Обработать("(Элемент) -> + |Если ЭтоКаталогВерсии2(Элемент.Путь) Тогда + | Возврат ПутьКИсполняемомуФайлуВерсии2(Элемент.Путь); + |Иначе + | Возврат ПутьКИсполняемомуФайлуВерсии1(Элемент.Путь); + |КонецЕсли; + |", ЭтотОбъект) + .ПолучитьПервый(); + + Возврат ПутьКУстановленнойВерсии; + +КонецФункции + +Процедура ОбеспечитьСтрокуВерсииПоАлиасу(ТаблицаВерсий, Алиас, ИмяРеквизитаПуть = "ПутьСервер") + + СтрокаВерсии = ТаблицаВерсий.Найти(Алиас, "Алиас"); + + Если СтрокаВерсии = Неопределено Тогда + СтрокаВерсии = ТаблицаВерсий.Добавить(); + СтрокаВерсии.Алиас = Алиас; + КонецЕсли; + + СтрокаВерсии[ИмяРеквизитаПуть] = ПараметрыOVM.ПолныйАдресККаталогуДистрибутивов(); + +КонецПроцедуры + +Функция ПолучитьТочнуюВерсиюOneScript(Знач ПроверяемаяВерсия) + + КаталогУстановки = ПараметрыOVM.КаталогУстановкиПоУмолчанию(); + КаталогУстановкиВерсии = ОбъединитьПути(КаталогУстановки, ПроверяемаяВерсия); + ЭтоКаталогВерсии2 = ЭтоКаталогВерсии2(КаталогУстановкиВерсии); + Если ЭтоКаталогВерсии2 Тогда + ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлуВерсии2(КаталогУстановкиВерсии); + Иначе + ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлуВерсии1(КаталогУстановкиВерсии); + КонецЕсли; + + Команда = Новый Команда(); + Команда.УстановитьКоманду(ПутьКИсполняемомуФайлу); + Команда.ДобавитьПараметр("-version"); + + Команда.Исполнить(); + + ВыводКоманды = СокрЛП(Команда.ПолучитьВывод()); + Если СтрЧислоСтрок(ВыводКоманды) > 1 Тогда + РегулярноеВыражение = Новый РегулярноеВыражение("Version (\d+\.\d+\.\d+\.\d+)"); + Совпадения = РегулярноеВыражение.НайтиСовпадения(ВыводКоманды); + Если Совпадения.Количество() = 1 Тогда + ВыводКоманды = Совпадения[0].Группы[1].Значение; + Иначе + ВыводКоманды = "unknown"; + КонецЕсли; + КонецЕсли; + + Возврат ВыводКоманды; + +КонецФункции + +СистемнаяИнформация = Новый СистемнаяИнформация; +ЭтоWindows = Найти(ВРег(СистемнаяИнформация.ВерсияОС), "WINDOWS") > 0; diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\224\320\265\320\270\320\275\321\201\321\202\320\260\320\273\320\273\321\217\321\202\320\276\321\200OneScript.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\224\320\265\320\270\320\275\321\201\321\202\320\260\320\273\320\273\321\217\321\202\320\276\321\200OneScript.os" index ba88869..1f2dc32 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\224\320\265\320\270\320\275\321\201\321\202\320\260\320\273\320\273\321\217\321\202\320\276\321\200OneScript.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\224\320\265\320\270\320\275\321\201\321\202\320\260\320\273\320\273\321\217\321\202\320\276\321\200OneScript.os" @@ -1,5 +1,16 @@ +&ЛогOVM Перем Лог; +&Пластилин +Перем ВерсииOneScript; + +&Пластилин +Перем ПараметрыOVM; + +&Желудь +Процедура ПриСозданииОбъекта() +КонецПроцедуры + // Удалить установленную версию OneScript // // Параметры: @@ -36,5 +47,3 @@ КонецЦикла; КонецПроцедуры - -Лог = ПараметрыOVM.ПолучитьЛог(); diff --git "a/src/core/\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\213OVM.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213OVM.os" similarity index 58% rename from "src/core/\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\213OVM.os" rename to "src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213OVM.os" index 62f3aad..965be5c 100644 --- "a/src/core/\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\213OVM.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213OVM.os" @@ -1,18 +1,21 @@ #Использовать logos Перем СистемнаяИнформация; -Перем Лог; -Перем ОсновнойСпособВывода; +&Пластилин Перем ФайлНастроек; +&Желудь +Процедура ПриСозданииОбъекта() +КонецПроцедуры + // Путь к каталогу установки версий OneScript по умолчанию // // Возвращаемое значение: // Строка - Путь к каталогу установки по умолчанию // Функция КаталогУстановкиПоУмолчанию() Экспорт - + КаталогУстановкиПоУмолчанию = ПолучитьПеременнуюСреды("OVM_INSTALL_PATH"); Если НЕ ЗначениеЗаполнено(КаталогУстановкиПоУмолчанию) Тогда КаталогУстановкиПоУмолчанию = ОбъединитьПути( @@ -20,9 +23,9 @@ "ovm" ); КонецЕсли; - + Возврат КаталогУстановкиПоУмолчанию; - + КонецФункции // Адрес сайта OneScript @@ -61,46 +64,10 @@ Возврат 3; КонецФункции -// Получить основной лог приложения -// -// Возвращаемое значение: -// Лог - Основной лог приложения -// -Функция ПолучитьЛог() Экспорт - Возврат Лог; -КонецФункции - -// Получить основной способ вывода -// -// Возвращаемое значение: -// СпособВывода - Способ вывода фреймворка логирования logos -// -Функция ПолучитьОсновнойСпособВывода() Экспорт - Возврат ОсновнойСпособВывода; -КонецФункции - -// Форматирование строки, выводимой в лог (раскладка). -// -// Параметры: -// Уровень - УровниЛога - Уровень логирования выводимого сообщения -// Сообщение - Строка - Выводимое сообщение -// -// Возвращаемое значение: -// Строка - Сообщение, отформатированное с учетом раскладки -// -Функция Форматировать(Знач Уровень, Знач Сообщение) Экспорт - - Если Уровень = УровниЛога.Отладка ИЛИ Уровень = УровниЛога.Ошибка Тогда - Сообщение = СтрШаблон("%1 - %2", УровниЛога.НаименованиеУровня(Уровень), Сообщение); - КонецЕсли; - - Возврат Сообщение; - -КонецФункции - ////////////////////////////////////////////////////////////////////// Функция ЗначениеНастройки(Знач Ключ, Знач ЗначениеПоУмолчанию = Неопределено) Экспорт + Опция = ФайлНастроек.Получить(Ключ); Если Опция = Неопределено Тогда Возврат ЗначениеПоУмолчанию; @@ -110,18 +77,6 @@ КонецФункции -Функция ХранилищеНастроек() Экспорт - Возврат ФайлНастроек; -КонецФункции - ////////////////////////////////////////////////////////////////////// СистемнаяИнформация = Новый СистемнаяИнформация; -ОсновнойСпособВывода = ЛогосАппендер; - -Лог = Логирование.ПолучитьЛог("oscript.app.ovm"); -Лог.УстановитьРаскладку(ЭтотОбъект); -Лог.ДобавитьСпособВывода(ОсновнойСпособВывода); - -ИмяФайлаНастроек = ОбъединитьПути(КаталогУстановкиПоУмолчанию(), "ovm.config"); -ФайлНастроек = Новый ФайлНастроек(ИмяФайлаНастроек); diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" new file mode 100644 index 0000000..5db07a5 --- /dev/null +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" @@ -0,0 +1,16 @@ +&Желудь("ОписаниеКонсольногоПриложения") +&Верховный +Процедура ПриСозданииОбъекта() +КонецПроцедуры + +Функция ИмяПриложения() Экспорт + Возврат "ovm"; +КонецФункции + +Функция ПолноеИмяПриложения() Экспорт + Возврат "OneScript Version Manager"; +КонецФункции + +Функция ВерсияПриложения() Экспорт + Возврат "1.0.0-RC15"; +КонецФункции diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\321\201\320\272\320\273\320\260\320\264\320\272\320\260\320\233\320\276\320\263OVM.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\321\201\320\272\320\273\320\260\320\264\320\272\320\260\320\233\320\276\320\263OVM.os" new file mode 100644 index 0000000..bfd2104 --- /dev/null +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\321\201\320\272\320\273\320\260\320\264\320\272\320\260\320\233\320\276\320\263OVM.os" @@ -0,0 +1,25 @@ +#Использовать logos + +// Форматирование строки, выводимой в лог (раскладка). +// +// Параметры: +// Уровень - УровниЛога - Уровень логирования выводимого сообщения +// Сообщение - Строка - Выводимое сообщение +// +// Возвращаемое значение: +// Строка - Сообщение, отформатированное с учетом раскладки +// +Функция Форматировать(Знач Уровень, Знач Сообщение) Экспорт + + Если Уровень = УровниЛога.Отладка ИЛИ Уровень = УровниЛога.Ошибка Тогда + Сообщение = СтрШаблон("%1 - %2", УровниЛога.НаименованиеУровня(Уровень), Сообщение); + КонецЕсли; + + Возврат Сообщение; + +КонецФункции + +&Желудь +&Прозвище("РаскладкаЛогоса") +Процедура ПриСозданииОбъекта() +КонецПроцедуры diff --git "a/src/core/\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\321\211\320\270\320\272OneScript.os" "b/src/core/\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\321\211\320\270\320\272OneScript.os" index f2c911d..36cd3f2 100644 --- "a/src/core/\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\321\211\320\270\320\272OneScript.os" +++ "b/src/core/\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\321\211\320\270\320\272OneScript.os" @@ -1,12 +1,23 @@ #Использовать 1commands #Использовать fs #Использовать tempfiles -#Использовать logos #Использовать strings Перем ЭтоWindows; + +&ЛогOVM Перем Лог; +&Пластилин +Перем ПараметрыOVM; + +&Пластилин +Перем ВерсииOneScript; + +&Желудь +Процедура ПриСозданииОбъекта() +КонецПроцедуры + // Установка указанной версии OneScript. // Допустимо использовать трех-разрядные номера версий и шорткаты dev и stable // @@ -303,5 +314,3 @@ СистемнаяИнформация = Новый СистемнаяИнформация; ЭтоWindows = Найти(ВРег(СистемнаяИнформация.ВерсияОС), "WINDOWS") > 0; - -Лог = ПараметрыOVM.ПолучитьЛог(); diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\244\320\260\320\271\320\273\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\244\320\260\320\271\320\273\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272.os" index f0a0b12..65f33af 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\244\320\260\320\271\320\273\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\244\320\260\320\271\320\273\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272.os" @@ -7,10 +7,26 @@ Перем Лог; -Процедура ПриСозданииОбъекта(Знач ИмяФайлаНастроек) - ПутьКФайлу = ИмяФайлаНастроек; - Лог = Логирование.ПолучитьЛог("oscript.app.ovm"); +&Желудь +Процедура ПриСозданииОбъекта(&ЛогOVM пЛог) + + КаталогУстановкиПоУмолчанию = ПолучитьПеременнуюСреды("OVM_INSTALL_PATH"); + Если НЕ ЗначениеЗаполнено(КаталогУстановкиПоУмолчанию) Тогда + + СистемнаяИнформация = Новый СистемнаяИнформация; + + КаталогУстановкиПоУмолчанию = ОбъединитьПути( + СистемнаяИнформация.ПолучитьПутьПапки(СпециальнаяПапка.ЛокальныйКаталогДанныхПриложений), + "ovm" + ); + + КонецЕсли; + + Лог = пЛог; + ПутьКФайлу = ОбъединитьПути(КаталогУстановкиПоУмолчанию, "ovm.config");; + ПрочитатьНастройки(); + КонецПроцедуры Функция Получить(Знач Имя) Экспорт @@ -44,7 +60,7 @@ КонецПроцедуры Процедура Записать() Экспорт - + ФайлОпций = Новый Файл(ПутьКФайлу); ФС.ОбеспечитьКаталог(ФайлОпций.Путь); diff --git "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\233\320\276\320\263\320\276\321\201\320\220\320\277\320\277\320\265\320\275\320\264\320\265\321\200.os" "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\233\320\276\320\263\320\276\321\201\320\220\320\277\320\277\320\265\320\275\320\264\320\265\321\200.os" deleted file mode 100644 index b66411e..0000000 --- "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\233\320\276\320\263\320\276\321\201\320\220\320\277\320\277\320\265\320\275\320\264\320\265\321\200.os" +++ /dev/null @@ -1,43 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// LOGOS: вывод в консоль -// -////////////////////////////////////////////////////////////////////////// - -Перем КартаСтатусовИУровней; - -// Вывести сообщение через аппендер -// -// Параметры: -// Сообщение - Строка - Выводимое сообщение -// -Процедура Вывести(Знач Сообщение, УровеньСообщения) Экспорт - - Сообщить(Сообщение, КартаСтатусовИУровней[УровеньСообщения]); - -КонецПроцедуры - -// Закрыть аппендер -// -Процедура Закрыть() Экспорт - // NO-OP -КонецПроцедуры - -// Устанавливает свойство аппендера, заданное в конфигурационном файле -// -// Параметры: -// ИмяСвойства - Строка - Имя свойства -// Значение - Произвольный - Значение свойства -// -Процедура УстановитьСвойство(Знач ИмяСвойства, Знач Значение) Экспорт - Если ИмяСвойства = "message-status" Тогда - УстанавливаемыйСтатусСообщения = Значение; - КонецЕсли; -КонецПроцедуры // УстановитьСвойство() - -КартаСтатусовИУровней = Новый Соответствие; -КартаСтатусовИУровней.Вставить(УровниЛога.Отладка, СтатусСообщения.БезСтатуса); -КартаСтатусовИУровней.Вставить(УровниЛога.Информация, СтатусСообщения.Обычное); -КартаСтатусовИУровней.Вставить(УровниЛога.Предупреждение, СтатусСообщения.Внимание); -КартаСтатусовИУровней.Вставить(УровниЛога.Ошибка, СтатусСообщения.Важное); -КартаСтатусовИУровней.Вставить(УровниЛога.КритичнаяОшибка, СтатусСообщения.ОченьВажное); From 75aefa6af49872bae9dc111fd7890d5dba393aa5 Mon Sep 17 00:00:00 2001 From: sfaqer Date: Sun, 20 Aug 2023 22:39:58 +1000 Subject: [PATCH 19/25] =?UTF-8?q?=D0=9A=D0=BE=D1=80=D1=80=D0=B5=D0=BA?= =?UTF-8?q?=D1=82=D0=BD=D0=B0=D1=8F=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=B7=D0=B0=D0=B2=D0=B8=D1=81=D0=B8=D0=BC=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D0=B8=20autumn-cli?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packagedef | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packagedef b/packagedef index b0b40b2..c71ad1d 100644 --- a/packagedef +++ b/packagedef @@ -12,6 +12,6 @@ .ЗависитОт("strings") .ЗависитОт("autumn", "3.1.4") .ЗависитОт("autumn-logos", "1.1.0") - .ЗависитОт("autumn-cli", "1.0.0") + .ЗависитОт("autumn-cli", "1.0.2") .ИсполняемыйФайл("src/cmd/ovm.os", "ovm") ; From 18e123ba48e66fc86211b65c44f8eec8aa071f17 Mon Sep 17 00:00:00 2001 From: sfaqer Date: Wed, 23 Aug 2023 16:29:03 +1000 Subject: [PATCH 20/25] =?UTF-8?q?=D0=A0=D0=B0=D0=B1=D0=BE=D1=82=D0=BE?= =?UTF-8?q?=D1=81=D0=BF=D0=BE=D1=81=D0=BE=D0=B1=D0=BD=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D1=8C=20=D0=BF=D1=80=D0=B8=20=D1=83=D0=BF=D0=B0=D0=BA=D0=BE?= =?UTF-8?q?=D0=B2=D0=BA=D0=B5=20=D0=B2=20exe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packagedef | 5 +- src/cmd/ovm.os | 58 ++++++++++++++++++- ...20\266\320\265\320\275\320\270\321\217.os" | 2 +- 3 files changed, 60 insertions(+), 5 deletions(-) diff --git a/packagedef b/packagedef index c71ad1d..e669b04 100644 --- a/packagedef +++ b/packagedef @@ -10,8 +10,9 @@ .ЗависитОт("fs") .ЗависитОт("tempfiles") .ЗависитОт("strings") + .ЗависитОт("decorator", "1.5.2") .ЗависитОт("autumn", "3.1.4") - .ЗависитОт("autumn-logos", "1.1.0") - .ЗависитОт("autumn-cli", "1.0.2") + .ЗависитОт("autumn-logos", "1.1.1") + .ЗависитОт("autumn-cli", "1.0.3") .ИсполняемыйФайл("src/cmd/ovm.os", "ovm") ; diff --git a/src/cmd/ovm.os b/src/cmd/ovm.os index f3dfe11..1d1a4ca 100644 --- a/src/cmd/ovm.os +++ b/src/cmd/ovm.os @@ -5,9 +5,63 @@ #Использовать "." #Использовать "../core" +УпакованВИсполняемыйФайл = СтрНайти(ТекущийСценарий().Источник, "oscript://") <> 0; + +Если УпакованВИсполняемыйФайл Тогда + + // FIXME: Как только появятся варианты задания этих настроек кроме как через файл + ЗаписьТекста = Новый ЗаписьТекста("autumn-properties.json"); + + ЗаписьТекста.Записать(" + |{ + | ""logos"": { + | ""logger"": { + | ""oscript.app.ovm"": { + | ""level"": ""INFO"", + | ""appenders"": ""logos"", + | ""classlayout"": ""РаскладкаЛогOVM"" + | } + | }, + | ""appender"": { + | ""logos"": { + | ""type"": ""АппендерЛогOVM"", + | ""level"": ""INFO"" + | } + | } + | } + |} + |" + ); + + ЗаписьТекста.Закрыть(); + +КонецЕсли; + Поделка = Новый Поделка(); + +Если УпакованВИсполняемыйФайл Тогда + Поделка + .ДобавитьЗаготовку(Тип("ИнициализацияИнтефейсаКоманднойСтроки")) + .ДобавитьЗаготовку(Тип("ИнициализацияФабрикиЛогов")); +КонецЕсли; + Поделка - .ПросканироватьКаталог(ОбъединитьПути(ТекущийСценарий().Каталог, "..", "core")) - .ПросканироватьКаталог(ТекущийСценарий().Каталог); + .ДобавитьАннотацию(Тип("АннотацияЛогOVM")) + .ДобавитьЖелудь(Тип("ФайлНастроек")) + .ДобавитьЖелудь(Тип("УстановщикOneScript")) + .ДобавитьЖелудь(Тип("РаскладкаЛогOVM")) + .ДобавитьЖелудь(Тип("ПараметрыOVM")) + .ДобавитьЖелудь(Тип("ПараметрыПриложения")) + .ДобавитьЖелудь(Тип("ДеинсталляторOneScript")) + .ДобавитьЖелудь(Тип("ВерсииOneScript")) + .ДобавитьЖелудь(Тип("АппендерЛогOVM")) + .ДобавитьЖелудь(Тип("АктиваторOneScript")) + .ДобавитьЖелудь(Тип("КомандаConfig")) + .ДобавитьЖелудь(Тип("КомандаInstall")) + .ДобавитьЖелудь(Тип("КомандаList")) + .ДобавитьЖелудь(Тип("КомандаRun")) + .ДобавитьЖелудь(Тип("КомандаUninstall")) + .ДобавитьЖелудь(Тип("КомандаUse")) + .ДобавитьЖелудь(Тип("КомандаWhich")); Поделка.ЗапуститьПриложение(); diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" index 5db07a5..dc1d6af 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" @@ -12,5 +12,5 @@ КонецФункции Функция ВерсияПриложения() Экспорт - Возврат "1.0.0-RC15"; + Возврат "1.1.0"; КонецФункции From de9ab4b69244d4cdb5d268616670f7d7a3719d3e Mon Sep 17 00:00:00 2001 From: Kirill Chernenko <32082417+sfaqer@users.noreply.github.com> Date: Wed, 23 Aug 2023 21:31:26 +1000 Subject: [PATCH 21/25] =?UTF-8?q?Update=20src/core/=D0=9A=D0=BB=D0=B0?= =?UTF-8?q?=D1=81=D1=81=D1=8B/=D0=A4=D0=B0=D0=B9=D0=BB=D0=9D=D0=B0=D1=81?= =?UTF-8?q?=D1=82=D1=80=D0=BE=D0=B5=D0=BA.os?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Nikita Fedkin --- ...\320\260\321\201\321\202\321\200\320\276\320\265\320\272.os" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\244\320\260\320\271\320\273\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\244\320\260\320\271\320\273\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272.os" index 65f33af..75aeced 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\244\320\260\320\271\320\273\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\244\320\260\320\271\320\273\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272.os" @@ -23,7 +23,7 @@ КонецЕсли; Лог = пЛог; - ПутьКФайлу = ОбъединитьПути(КаталогУстановкиПоУмолчанию, "ovm.config");; + ПутьКФайлу = ОбъединитьПути(КаталогУстановкиПоУмолчанию, "ovm.config"); ПрочитатьНастройки(); From 2a92341da30e9c32ca3d8de0adfff4b32ec115b6 Mon Sep 17 00:00:00 2001 From: Kirill Chernenko <32082417+sfaqer@users.noreply.github.com> Date: Wed, 23 Aug 2023 21:35:17 +1000 Subject: [PATCH 22/25] =?UTF-8?q?=D0=9F=D0=BE=D0=B4=D0=BD=D1=8F=D0=BB=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B2=D0=B8=D1=81=D0=B8=D0=BC=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D1=8C=20=D0=BE=D1=82=20fluent?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packagedef | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packagedef b/packagedef index e669b04..763f3a7 100644 --- a/packagedef +++ b/packagedef @@ -6,7 +6,7 @@ .ВерсияСреды("1.0.20") .ЗависитОт("json") .ЗависитОт("1commands", "1.3.2") - .ЗависитОт("fluent", "0.3.1") + .ЗависитОт("fluent", "0.6.1") .ЗависитОт("fs") .ЗависитОт("tempfiles") .ЗависитОт("strings") From 415b5d82afeee0a211ab99b33ec504fa90500f9c Mon Sep 17 00:00:00 2001 From: Vladimir Nadulich Date: Mon, 18 Sep 2023 00:12:28 +0300 Subject: [PATCH 23/25] =?UTF-8?q?Fix:=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA?= =?UTF-8?q?=D0=B0=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D1=8F=20?= =?UTF-8?q?=D1=81=D0=B8=D0=BC=D0=BB=D0=B8=D0=BD=D0=BA=D0=B0=20=D1=81=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=B1=D0=B5=D0=BB=D0=BE=D0=B2=20=D0=B2=20?= =?UTF-8?q?=D0=BF=D1=83=D1=82=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0\270\320\262\320\260\321\202\320\276\321\200OneScript.os" | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\272\321\202\320\270\320\262\320\260\321\202\320\276\321\200OneScript.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\272\321\202\320\270\320\262\320\260\321\202\320\276\321\200OneScript.os" index bb74215..8f01fbf 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\272\321\202\320\270\320\262\320\260\321\202\320\276\321\200OneScript.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\272\321\202\320\270\320\262\320\260\321\202\320\276\321\200OneScript.os" @@ -67,8 +67,8 @@ Команда = Новый Команда; Команда.УстановитьКоманду("mklink"); Команда.ДобавитьПараметр("/J"); - Команда.ДобавитьПараметр(ПутьКСсылке); - Команда.ДобавитьПараметр(ПутьККаталогуНазначения); + Команда.ДобавитьПараметр(Команда.ОбернутьВКавычки(ПутьКСсылке)); + Команда.ДобавитьПараметр(Команда.ОбернутьВКавычки(ПутьККаталогуНазначения)); Команда.УстановитьПравильныйКодВозврата(0); Команда.Исполнить(); From 248b255e229469a82284abccdff04a31fec1b060 Mon Sep 17 00:00:00 2001 From: sfaqer Date: Sun, 1 Oct 2023 11:37:09 +1000 Subject: [PATCH 24/25] =?UTF-8?q?1.=20=D0=9D=D0=B0=D1=81=D1=82=D1=80=D0=BE?= =?UTF-8?q?=D0=B9=D0=BA=D0=B8=20=D0=BB=D0=BE=D0=B3=D0=BE=D1=81=D0=B0=20?= =?UTF-8?q?=D0=B2=D1=8B=D0=BD=D0=B5=D1=81=D0=B5=D0=BD=D1=8B=20=D0=B8=D0=B7?= =?UTF-8?q?=20=D1=84=D0=B0=D0=B9=D0=BB=D0=B0=20=D0=BD=D0=B0=D1=81=D1=82?= =?UTF-8?q?=D1=80=D0=BE=D0=B5=D0=BA=20=D0=B8=20=D0=B7=D0=B0=D0=B4=D0=B0?= =?UTF-8?q?=D1=8E=D1=82=D1=81=D1=8F=20=D0=BF=D1=80=D0=B8=20=D1=81=D1=82?= =?UTF-8?q?=D0=B0=D1=80=D1=82=D0=B5=20=D0=BF=D1=80=D0=B8=D0=BB=D0=BE=D0=B6?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B7=D0=BD=D0=B0=D1=87=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=D0=BC=20=D0=B4=D0=B5=D1=82=D0=B0=D0=BB=D0=B5=D0=BA?= =?UTF-8?q?=202.=20=D0=92=D1=81=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=20=D1=81=20=D1=87=D1=82=D0=B5=D0=BD=D0=B8=D0=B5=D0=BC=20?= =?UTF-8?q?=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B5=D0=BA=20=D0=B8=D0=B7?= =?UTF-8?q?=20=D1=84=D0=B0=D0=B9=D0=BB=D0=B0=20=D0=BD=D0=B0=D1=81=D1=82?= =?UTF-8?q?=D1=80=D0=BE=D0=B5=D0=BA=20=D0=BE=D1=82=D0=B4=D0=B0=D0=BD=D0=B0?= =?UTF-8?q?=20=D0=9E=D0=A1=D0=B5=D0=BD=D0=B8,=20ovm=20=D1=82=D0=B5=D0=BF?= =?UTF-8?q?=D0=B5=D1=80=D1=8C=20=D1=82=D0=BE=D0=BB=D1=8C=D0=BA=D0=BE=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=BF=D0=B8=D1=81=D1=8B=D0=B2=D0=B0=D0=B5=D1=82=20?= =?UTF-8?q?=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B9=D0=BA=D0=B8=20=D0=B2?= =?UTF-8?q?=20.ini=20=D1=84=D0=B0=D0=B9=D0=BB=203.=20=D0=A1=D0=B0=D0=BC=20?= =?UTF-8?q?=D1=84=D0=B0=D0=B9=D0=BB=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE?= =?UTF-8?q?=D0=B5=D0=BA=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B8=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=20ovm.config=20->=20autumn-properties.?= =?UTF-8?q?ini=20=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=20=D0=BE=D0=B1=D0=BD=D0=BE?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20ovm=20=D0=B5=D1=81=D0=BB?= =?UTF-8?q?=D0=B8=20=D0=B1=D1=8B=D0=BB=D0=B8=20=D0=B7=D0=B0=D0=B4=D0=B0?= =?UTF-8?q?=D0=BD=D1=8B=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B9=D0=BA?= =?UTF-8?q?=D0=B8=20=D0=BD=D1=83=D0=B6=D0=BD=D0=BE=20=D0=B1=D1=83=D0=B4?= =?UTF-8?q?=D0=B5=D1=82=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B8=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D1=82=D1=8C=20=D1=81=D1=83=D1=89=D0=B5=D1=81?= =?UTF-8?q?=D1=82=D0=B2=D1=83=D1=8E=D1=89=D0=B8=D0=B9=20=D1=84=D0=B0=D0=B9?= =?UTF-8?q?=D0=BB=20=D0=B2=20=D0=BD=D0=BE=D0=B2=D0=BE=D0=B5=20=D0=B8=D0=BC?= =?UTF-8?q?=D1=8F=20=D0=B4=D0=BB=D1=8F=20=D0=BA=D0=BE=D1=80=D1=80=D0=B5?= =?UTF-8?q?=D0=BA=D1=82=D0=BD=D0=BE=D0=B9=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- autumn-properties.json | 17 ------ packagedef | 2 +- src/cmd/ovm.os | 58 +++++++++---------- ...274\320\265\321\202\321\200\321\213OVM.os" | 21 +------ ...0\262\321\211\320\270\320\272OneScript.os" | 55 +++++++++++++----- ...21\202\321\200\320\276\320\265\320\272.os" | 30 ++-------- 6 files changed, 76 insertions(+), 107 deletions(-) delete mode 100644 autumn-properties.json diff --git a/autumn-properties.json b/autumn-properties.json deleted file mode 100644 index 36b55dd..0000000 --- a/autumn-properties.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "logos": { - "logger": { - "oscript.app.ovm": { - "level": "INFO", - "appenders": "logos", - "classlayout": "РаскладкаЛогOVM" - } - }, - "appender": { - "logos": { - "type": "АппендерЛогOVM", - "level": "INFO" - } - } - } -} \ No newline at end of file diff --git a/packagedef b/packagedef index 763f3a7..4797d07 100644 --- a/packagedef +++ b/packagedef @@ -11,7 +11,7 @@ .ЗависитОт("tempfiles") .ЗависитОт("strings") .ЗависитОт("decorator", "1.5.2") - .ЗависитОт("autumn", "3.1.4") + .ЗависитОт("autumn", "3.1.5") .ЗависитОт("autumn-logos", "1.1.1") .ЗависитОт("autumn-cli", "1.0.3") .ИсполняемыйФайл("src/cmd/ovm.os", "ovm") diff --git a/src/cmd/ovm.os b/src/cmd/ovm.os index 1d1a4ca..7e3b8ed 100644 --- a/src/cmd/ovm.os +++ b/src/cmd/ovm.os @@ -5,39 +5,39 @@ #Использовать "." #Использовать "../core" -УпакованВИсполняемыйФайл = СтрНайти(ТекущийСценарий().Источник, "oscript://") <> 0; +Функция НастройкиЛогоса() -Если УпакованВИсполняемыйФайл Тогда + НастройкиЛога = Новый Соответствие; + НастройкиЛога.Вставить("level", "INFO"); + НастройкиЛога.Вставить("appenders", "logos"); + НастройкиЛога.Вставить("classlayout", "РаскладкаЛогOVM"); - // FIXME: Как только появятся варианты задания этих настроек кроме как через файл - ЗаписьТекста = Новый ЗаписьТекста("autumn-properties.json"); - - ЗаписьТекста.Записать(" - |{ - | ""logos"": { - | ""logger"": { - | ""oscript.app.ovm"": { - | ""level"": ""INFO"", - | ""appenders"": ""logos"", - | ""classlayout"": ""РаскладкаЛогOVM"" - | } - | }, - | ""appender"": { - | ""logos"": { - | ""type"": ""АппендерЛогOVM"", - | ""level"": ""INFO"" - | } - | } - | } - |} - |" - ); - - ЗаписьТекста.Закрыть(); + НастройкиУровнейЛогов = Новый Соответствие; + НастройкиУровнейЛогов.Вставить("oscript.app.ovm", НастройкиЛога); -КонецЕсли; + НастройкаАппендера = Новый Соответствие; + НастройкаАппендера.Вставить("type", "АппендерЛогOVM"); + НастройкаАппендера.Вставить("level", "INFO"); + + НастройкиАппендеров = Новый Соответствие; + + НастройкиАппендеров.Вставить("logos", НастройкаАппендера); + + Результат = Новый Соответствие; -Поделка = Новый Поделка(); + Результат.Вставить("logos.logger", НастройкиУровнейЛогов); + Результат.Вставить("logos.appender", НастройкиАппендеров); + + Возврат Результат; + +КонецФункции + +СоветДругогоМастера = Новый СоветДругогоМастера; +СоветДругогоМастера.ЗначенияДеталек(НастройкиЛогоса()); + +Поделка = Новый Поделка(СоветДругогоМастера); + +УпакованВИсполняемыйФайл = СтрНайти(ТекущийСценарий().Источник, "oscript://") <> 0; Если УпакованВИсполняемыйФайл Тогда Поделка diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213OVM.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213OVM.os" index 965be5c..23a770f 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213OVM.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213OVM.os" @@ -2,8 +2,8 @@ Перем СистемнаяИнформация; -&Пластилин -Перем ФайлНастроек; +&Деталька(Значение = "oscript.server", ЗначениеПоУмолчанию = "https://oscript.io") +Перем АдресСайтаОСкрипт; &Желудь Процедура ПриСозданииОбъекта() @@ -34,7 +34,7 @@ // Строка - Адрес сайта OneScript // Функция АдресСайтаОСкрипт() Экспорт - Возврат ЗначениеНастройки("oscript.server", "https://oscript.io"); + Возврат АдресСайтаОСкрипт; КонецФункции // Полный адрес к каталогу дистрибутивов OneScript @@ -64,19 +64,4 @@ Возврат 3; КонецФункции -////////////////////////////////////////////////////////////////////// - -Функция ЗначениеНастройки(Знач Ключ, Знач ЗначениеПоУмолчанию = Неопределено) Экспорт - - Опция = ФайлНастроек.Получить(Ключ); - Если Опция = Неопределено Тогда - Возврат ЗначениеПоУмолчанию; - КонецЕсли; - - Возврат Опция; - -КонецФункции - -////////////////////////////////////////////////////////////////////// - СистемнаяИнформация = Новый СистемнаяИнформация; diff --git "a/src/core/\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\321\211\320\270\320\272OneScript.os" "b/src/core/\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\321\211\320\270\320\272OneScript.os" index 36cd3f2..2b0fe22 100644 --- "a/src/core/\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\321\211\320\270\320\272OneScript.os" +++ "b/src/core/\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\321\211\320\270\320\272OneScript.os" @@ -14,6 +14,24 @@ &Пластилин Перем ВерсииOneScript; +&Деталька("proxy.use") +Перем ИспользоватьПрокси; + +&Деталька("proxy.server") +Перем ПроксиСервер; + +&Деталька("proxy.port") +Перем ПроксиПорт; + +&Деталька("proxy.user") +Перем ПроксиПользователь; + +&Деталька("proxy.password") +Перем ПроксиПароль; + +&Деталька("proxy.osAuthentication") +Перем ПроксиАвторизацияОС; + &Желудь Процедура ПриСозданииОбъекта() КонецПроцедуры @@ -81,29 +99,34 @@ АдресСайтаОСкрипт = ПараметрыOVM.АдресСайтаОСкрипт(); - СерверПрокси = ПараметрыOVM.ЗначениеНастройки("proxy.server"); - ИспользоватьПрокси = ПараметрыOVM.ЗначениеНастройки("proxy.use"); - Если ИспользоватьПрокси = "true" Тогда - Если Не ЗначениеЗаполнено(СерверПрокси) Тогда + + Если Не ЗначениеЗаполнено(ПроксиСервер) Тогда + Лог.Отладка("Использую системный прокси"); Прокси = Новый ИнтернетПрокси(Истина); - ИначеЕсли ЗначениеЗаполнено(СерверПрокси) Тогда - Лог.Отладка("Использую прокси %1", ПараметрыOVM.ЗначениеНастройки("proxy.server")); + + ИначеЕсли ЗначениеЗаполнено(ПроксиСервер) Тогда + + Лог.Отладка("Использую прокси %1", ПроксиСервер); Прокси = Новый ИнтернетПрокси(); + Прокси.Установить("http", - ПараметрыOVM.ЗначениеНастройки("proxy.server"), - ПараметрыOVM.ЗначениеНастройки("proxy.port"), - ПараметрыOVM.ЗначениеНастройки("proxy.user"), - ПараметрыOVM.ЗначениеНастройки("proxy.password"), - ПараметрыOVM.ЗначениеНастройки("proxy.osAuthentication")); + ПроксиСервер, + ПроксиПорт, + ПроксиПользователь, + ПроксиПароль, + ПроксиАвторизацияОС + ); Прокси.Установить("https", - ПараметрыOVM.ЗначениеНастройки("proxy.server"), - ПараметрыOVM.ЗначениеНастройки("proxy.port"), - ПараметрыOVM.ЗначениеНастройки("proxy.user"), - ПараметрыOVM.ЗначениеНастройки("proxy.password"), - ПараметрыOVM.ЗначениеНастройки("proxy.osAuthentication")); + ПроксиСервер, + ПроксиПорт, + ПроксиПользователь, + ПроксиПароль, + ПроксиАвторизацияОС + ); + КонецЕсли; Иначе Лог.Отладка("Прокси не используется"); diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\244\320\260\320\271\320\273\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\244\320\260\320\271\320\273\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272.os" index 75aeced..3a80d73 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\244\320\260\320\271\320\273\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\244\320\260\320\271\320\273\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272.os" @@ -8,40 +8,18 @@ Перем Лог; &Желудь -Процедура ПриСозданииОбъекта(&ЛогOVM пЛог) - - КаталогУстановкиПоУмолчанию = ПолучитьПеременнуюСреды("OVM_INSTALL_PATH"); - Если НЕ ЗначениеЗаполнено(КаталогУстановкиПоУмолчанию) Тогда - - СистемнаяИнформация = Новый СистемнаяИнформация; - - КаталогУстановкиПоУмолчанию = ОбъединитьПути( - СистемнаяИнформация.ПолучитьПутьПапки(СпециальнаяПапка.ЛокальныйКаталогДанныхПриложений), - "ovm" - ); - - КонецЕсли; +Процедура ПриСозданииОбъекта(&ЛогOVM пЛог, &Пластилин ПараметрыOVM) Лог = пЛог; - ПутьКФайлу = ОбъединитьПути(КаталогУстановкиПоУмолчанию, "ovm.config"); + + ПутьКФайлу = ОбъединитьПути(ПараметрыOVM.КаталогУстановкиПоУмолчанию(), "autumn-properties.ini"); ПрочитатьНастройки(); КонецПроцедуры -Функция Получить(Знач Имя) Экспорт - Лог.Отладка("Запрошено значение %1", Имя); - НомерСтроки = Индекс[Имя]; - Если НомерСтроки = Неопределено Тогда - Возврат Неопределено; - КонецЕсли; - Значение = ЗначенияНастроек[НомерСтроки].Значение; - Лог.Отладка("Получено значение %1=%2", Имя, Значение); - Возврат Значение; -КонецФункции - Процедура Установить(Знач Имя, Знач Значение) Экспорт - + РегулярноеВыражение = Новый РегулярноеВыражение("[A-Za-z0-9\.]+"); РегулярноеВыражение.Многострочный = Ложь; Если Не РегулярноеВыражение.Совпадает(Имя) Тогда From 0eaef6dda00637eec9ec5fe57f847a1bfaa1c262 Mon Sep 17 00:00:00 2001 From: Kirill Chernenko <32082417+sfaqer@users.noreply.github.com> Date: Sun, 1 Oct 2023 12:12:59 +1000 Subject: [PATCH 25/25] Update packagedef Co-authored-by: Nikita Fedkin --- packagedef | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packagedef b/packagedef index 4797d07..6ce02d7 100644 --- a/packagedef +++ b/packagedef @@ -11,7 +11,7 @@ .ЗависитОт("tempfiles") .ЗависитОт("strings") .ЗависитОт("decorator", "1.5.2") - .ЗависитОт("autumn", "3.1.5") + .ЗависитОт("autumn", "3.2.0") .ЗависитОт("autumn-logos", "1.1.1") .ЗависитОт("autumn-cli", "1.0.3") .ИсполняемыйФайл("src/cmd/ovm.os", "ovm")