Skip to content

Commit

Permalink
Merge pull request #23 from oscript-library/develop
Browse files Browse the repository at this point in the history
1.2.0
  • Loading branch information
nixel2007 authored Oct 3, 2023
2 parents 186e1bd + 8683aa2 commit 7c5d66b
Show file tree
Hide file tree
Showing 6 changed files with 173 additions and 136 deletions.
4 changes: 3 additions & 1 deletion packagedef
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Описание.Имя("ovm")
.Версия("1.0.0")
.Версия("1.2.0")
.Автор("Nikita Gryzlov")
.АдресАвтора("[email protected]")
.Описание("OneScript Version Manager")
Expand All @@ -14,5 +14,7 @@
.ЗависитОт("autumn", "3.2.0")
.ЗависитОт("autumn-logos", "1.1.1")
.ЗависитОт("autumn-cli", "1.0.3")
.ЗависитОт("collectionos", "0.3.0")
.РазработкаЗависитОт("1bdd", "1.13.0")
.ИсполняемыйФайл("src/cmd/ovm.os", "ovm")
;
21 changes: 15 additions & 6 deletions src/cmd/Классы/КомандаInstall.os
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
//
Процедура ОписаниеКоманды(КомандаПриложения) Экспорт

КомандаПриложения.Опция("name", "", "Синоним (алиас) устанавливаемой версии для последущего использования в ovm use")
КомандаПриложения.Опция("name", "", "Синоним (алиас) устанавливаемой версии для последующего использования в ovm use")
.ТСтрока()
.ВОкружении("OVM_INSTALL_NAME");

Expand All @@ -32,11 +32,15 @@
.ВОкружении("OVM_INSTALL_X86");
КонецЕсли;

КомандаПриложения.Опция("fdd", Ложь, "Устанавливать fdd дистрибутив OneScript (требует установленный .NET для работы)")
.ВОкружении("OVM_INSTALL_FDD");

КомандаПриложения.Аргумент(
"VERSION",
,
"Устанавливаемая версия (версии) OneScript. " +
"Допустимо использовать трехномерные версии (1.0.17, 1.0.18), stable, dev. " +
"Допустимо использовать трехномерные версии (1.0.17, 1.0.18), " +
"lts, stable, dev, preview, lts-dev " +
"Может быть передано несколько значений")
.ТМассивСтрок()
.ВОкружении("OVM_INSTALL_VERSION");
Expand All @@ -52,20 +56,25 @@

МассивВерсийКУстановке = КомандаПриложения.ЗначениеАргумента("VERSION");
АлиасВерсии = КомандаПриложения.ЗначениеОпции("name");
ОчищатьКаталогУстановки = КомандаПриложения.ЗначениеОпции("clean");

ДополнительныеПараметры = УстановщикOneScript.ДополнительныеПараметрыУстановки();

ДополнительныеПараметры.ОчищатьКаталогУстановки = КомандаПриложения.ЗначениеОпции("clean");

Если ЗначениеЗаполнено(АлиасВерсии) И МассивВерсийКУстановке.Количество() > 1 Тогда
ВызватьИсключение "Опция <--name> может быть задана только при установке одной версии OneScript";
КонецЕсли;

Если ПараметрыOVM.Это64БитнаяОперационнаяСистема() Тогда
ИспользоватьХ64 = НЕ КомандаПриложения.ЗначениеОпции("x86");
ДополнительныеПараметры.ИспользоватьХ64 = НЕ КомандаПриложения.ЗначениеОпции("x86");
Иначе
ИспользоватьХ64 = Ложь;
ДополнительныеПараметры.ИспользоватьХ64 = Ложь;
КонецЕсли;

ДополнительныеПараметры.ИспользоватьFDD = КомандаПриложения.ЗначениеОпции("fdd");

Для Каждого ВерсияКУстановке Из МассивВерсийКУстановке Цикл
УстановщикOneScript.УстановитьOneScript(ВерсияКУстановке, АлиасВерсии, ОчищатьКаталогУстановки, ИспользоватьХ64);
УстановщикOneScript.УстановитьOneScript(ВерсияКУстановке, АлиасВерсии, ДополнительныеПараметры);
КонецЦикла;

Если МассивВерсийКУстановке.Количество() > 0 Тогда
Expand Down
6 changes: 5 additions & 1 deletion src/core/Классы/АктиваторOneScript.os
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,11 @@

Если ВыполнятьУстановкуПриНеобходимости Тогда
УстановщикOneScript = Новый УстановщикOneScript();
УстановщикOneScript.УстановитьOneScript(ИспользуемаяВерсия, , , СистемнаяИнформация.Это64БитнаяОперационнаяСистема);

ДополнительныеПараметры = УстановщикOneScript.ДополнительныеПараметрыУстановки();
ДополнительныеПараметры.ИспользоватьХ64 = СистемнаяИнформация.Это64БитнаяОперационнаяСистема;

УстановщикOneScript.УстановитьOneScript(ИспользуемаяВерсия, , ДополнительныеПараметры);
Иначе
ВызватьИсключение СтрШаблон("Не обнаружена требуемая версия <%1>", ИспользуемаяВерсия);
КонецЕсли;
Expand Down
125 changes: 65 additions & 60 deletions src/core/Классы/ВерсииOneScript.os
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#Использовать 1commands
#Использовать fluent
#Использовать fs
#Использовать collectionos

&ЛогOVM
Перем Лог;
Expand All @@ -9,11 +10,42 @@
Перем ПараметрыOVM;

Перем ЭтоWindows;
Перем ДопустимыеАлиасы; // Кеш коллекции допустимых алиасов

&Желудь
Процедура ПриСозданииОбъекта()
КонецПроцедуры

Функция ДопустимыеАлиасы() Экспорт

Если ДопустимыеАлиасы = Неопределено Тогда

ДопустимыеАлиасы = Новый КартаСоответствие;

ДопустимыеАлиасы.Вставить("lts", Версия("lts", Ложь));
ДопустимыеАлиасы.Вставить("stable", Версия("latest", Ложь));
ДопустимыеАлиасы.Вставить("dev", Версия("night-build", Истина));

ДопустимыеАлиасы.Вставить("preview", Версия("preview", Истина));
ДопустимыеАлиасы.Вставить("lts-dev", Версия("latest-dev", Ложь));

КонецЕсли;

Возврат ДопустимыеАлиасы;

КонецФункции

Функция Версия(Метка, ЭтоВерсия2)

Результат = Новый Структура;

Результат.Вставить("Метка", Метка);
Результат.Вставить("ЭтоВерсия2", ЭтоВерсия2);

Возврат Результат;

КонецФункции

// Проверить, что версия установлена
//
// Параметры:
Expand All @@ -28,9 +60,13 @@
КаталогУстановкиВерсии = ОбъединитьПути(КаталогУстановки, ПроверяемаяВерсия);

СуществуетКаталогУстановкиВерсии = ФС.КаталогСуществует(КаталогУстановкиВерсии);
СуществуетOscriptExe = ФС.ФайлСуществует(ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript.exe"));
ЭтоКаталогВерсии2 = ЭтоКаталогВерсии2(КаталогУстановкиВерсии);
Результат = СуществуетКаталогУстановкиВерсии И (СуществуетOscriptExe ИЛИ ЭтоКаталогВерсии2);
СуществуетИсполняемыйФайл =
ФС.ФайлСуществует(ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript.exe")) // SCD
Или ФС.ФайлСуществует(ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript")) // SCD
Или ФС.ФайлСуществует(ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript.bat")) // FDD
Или ФС.ФайлСуществует(ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript.sh")); // FDD

Результат = СуществуетКаталогУстановкиВерсии И СуществуетИсполняемыйФайл;

Лог.Отладка("Версия %1 установлена: %2", ПроверяемаяВерсия, Результат);
Возврат Результат;
Expand Down Expand Up @@ -67,51 +103,25 @@

КонецФункции

// Проверяет, что переданный каталог является каталогом OneScript 2.0+
//
// Параметры:
// КаталогУстановкиВерсии - Строка - Путь к конкретной версии.
//
// Возвращаемое значение:
// Булево
//
Функция ЭтоКаталогВерсии2(КаталогУстановкиВерсии) Экспорт
Возврат ФС.ФайлСуществует(ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript.dll"));
КонецФункции

// Получает путь к исполняемому файлу OneScript по шаблону версии 1.x.
// Получает путь к исполняемому файлу OneScript
//
// Параметры:
// КаталогУстановкиВерсии - Строка - Путь к конкретной версии.
//
// Возвращаемое значение:
// Строка - Путь к исполняемому файлу.
//
Функция ПутьКИсполняемомуФайлуВерсии1(КаталогУстановкиВерсии) Экспорт
Функция ПутьКИсполняемомуФайлу(КаталогУстановкиВерсии) Экспорт

ПутьКИсполняемомуФайлу = ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript");
Если ЭтоWindows Тогда

Если ЭтоWindows И ФС.ФайлСуществует(ПутьКИсполняемомуФайлу + ".exe") Тогда
ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлу + ".exe";
КонецЕсли;

Возврат ПутьКИсполняемомуФайлу;

КонецФункции

// Получает путь к исполняемому файлу OneScript по шаблону версии 1.x.
//
// Параметры:
// КаталогУстановкиВерсии - Строка - Путь к конкретной версии.
//
// Возвращаемое значение:
// Строка - Путь к исполняемому файлу.
//
Функция ПутьКИсполняемомуФайлуВерсии2(КаталогУстановкиВерсии) Экспорт

ПутьКИсполняемомуФайлу = ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript");
Если ЭтоWindows Тогда
ИначеЕсли ЭтоWindows Тогда
ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлу + ".bat";
КонецЕсли;
ИначеЕсли ФС.ФайлСуществует(ПутьКИсполняемомуФайлу + ".sh") Тогда
ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлу + ".sh";
КонецЕсли; // BSLLS:IfElseIfEndsWithElse-off

Возврат ПутьКИсполняемомуФайлу;

Expand Down Expand Up @@ -249,8 +259,11 @@
ДоступнаяВерсия.Путь = АдресСайтаОСкрипт + ГруппаАдрес.Значение;
КонецЦикла;

ОбеспечитьСтрокуВерсииПоАлиасу(ДоступныеВерсии, "dev", "Путь");
ОбеспечитьСтрокуВерсииПоАлиасу(ДоступныеВерсии, "stable", "Путь");
Итератор = ДопустимыеАлиасы().Ключи().Итератор();

Пока Итератор.ЕстьСледующий() Цикл
ОбеспечитьСтрокуВерсииПоАлиасу(ДоступныеВерсии, Итератор.Следующий(), "Путь");
КонецЦикла;

Возврат ДоступныеВерсии;

Expand Down Expand Up @@ -291,24 +304,27 @@
СтрокаВсеВерсии.ПутьСервер = ДоступнаяВерсия.Путь;
КонецЦикла;

Для Каждого УстановленнаяВерсия Из СписокУстановленныхВерсий Цикл
Для Каждого УстановленнаяВерсия Из СписокУстановленныхВерсий Цикл
СтрокаВсеВерсии = ВсеВерсии.Найти(УстановленнаяВерсия.Алиас, "Алиас");
Если СтрокаВсеВерсии = Неопределено Тогда
СтрокаВсеВерсии = ВсеВерсии.Добавить();
СтрокаВсеВерсии.Алиас = УстановленнаяВерсия.Алиас;
СтрокаВсеВерсии.ЭтоСимлинк = УстановленнаяВерсия.ЭтоСимлинк;
СтрокаВсеВерсии.ЭтоСимлинк = УстановленнаяВерсия.ЭтоСимлинк;
КонецЕсли;

СтрокаВсеВерсии.Версия = УстановленнаяВерсия.Версия;
СтрокаВсеВерсии.ПутьЛокальный = УстановленнаяВерсия.Путь;
СтрокаВсеВерсии.ВерсияУстановлена = Истина;
КонецЦикла;

ОбеспечитьСтрокуВерсииПоАлиасу(ВсеВерсии, "dev");
ОбеспечитьСтрокуВерсииПоАлиасу(ВсеВерсии, "stable");

Итератор = ДопустимыеАлиасы().Ключи().Итератор();

Пока Итератор.ЕстьСледующий() Цикл
ОбеспечитьСтрокуВерсииПоАлиасу(ВсеВерсии, Итератор.Следующий());
КонецЦикла;

ВсеВерсии.Сортировать("Алиас");

Возврат ВсеВерсии;

КонецФункции
Expand All @@ -331,13 +347,7 @@
Новый Структура("УстановленнаяВерсия", УстановленнаяВерсия)
)
.Первые(1)
.Обработать("(Элемент) ->
|Если ЭтоКаталогВерсии2(Элемент.Путь) Тогда
| Возврат ПутьКИсполняемомуФайлуВерсии2(Элемент.Путь);
|Иначе
| Возврат ПутьКИсполняемомуФайлуВерсии1(Элемент.Путь);
|КонецЕсли;
|", ЭтотОбъект)
.Обработать("(Элемент) -> ПутьКИсполняемомуФайлу(Элемент.Путь);", ЭтотОбъект)
.ПолучитьПервый();

Возврат ПутьКУстановленнойВерсии;
Expand All @@ -361,13 +371,8 @@

КаталогУстановки = ПараметрыOVM.КаталогУстановкиПоУмолчанию();
КаталогУстановкиВерсии = ОбъединитьПути(КаталогУстановки, ПроверяемаяВерсия);
ЭтоКаталогВерсии2 = ЭтоКаталогВерсии2(КаталогУстановкиВерсии);
Если ЭтоКаталогВерсии2 Тогда
ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлуВерсии2(КаталогУстановкиВерсии);
Иначе
ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлуВерсии1(КаталогУстановкиВерсии);
КонецЕсли;

ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлу(КаталогУстановкиВерсии);

Команда = Новый Команда();
Команда.УстановитьКоманду(ПутьКИсполняемомуФайлу);
Команда.ДобавитьПараметр("-version");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,5 @@
КонецФункции

Функция ВерсияПриложения() Экспорт
Возврат "1.1.0";
Возврат "1.2.0";
КонецФункции
Loading

0 comments on commit 7c5d66b

Please sign in to comment.