Skip to content

Commit

Permalink
Merge pull request #10 from 240596448/feature/x64
Browse files Browse the repository at this point in the history
  • Loading branch information
nixel2007 authored Aug 15, 2022
2 parents 9ad8cf7 + 9aaf758 commit cd34333
Show file tree
Hide file tree
Showing 6 changed files with 63 additions and 10 deletions.
9 changes: 9 additions & 0 deletions features/integration.feature
Original file line number Diff line number Diff line change
Expand Up @@ -40,3 +40,12 @@
И я вижу в консоли строку подобно ".*oscript$"
И Я выполняю команду "which opm"
И я вижу в консоли строку подобно ".*opm$"

Сценарий: Проверка установки x64 и опции --x86
Когда Я выполняю команду "ovm install stable"
Тогда я вижу в консоли вывод "Скачиваю установщик версии stable-x64..."
И я вижу в консоли вывод "Установка OneScript stable завершена"

Когда Я выполняю команду "ovm install --x86 stable"
Тогда я вижу в консоли вывод "Скачиваю установщик версии stable..."
И я вижу в консоли вывод "Установка OneScript stable завершена"
1 change: 1 addition & 0 deletions packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,6 @@
.ЗависитОт("logos")
.ЗависитОт("tempfiles")
.ЗависитОт("cli", "0.9.8")
.ЗависитОт("strings")
.ИсполняемыйФайл("src/cmd/ovm.os", "ovm")
;
15 changes: 13 additions & 2 deletions src/cmd/Классы/КомандаInstall.os
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,12 @@

КомандаПриложения.Опция("clean c", Ложь, "Полностью очищать каталог установки (включая установленные библиотеки)")
.ВОкружении("OVM_INSTALL_CLEAN");


Если ПараметрыOVM.Это64БитнаяОперационнаяСистема() Тогда
КомандаПриложения.Опция("x86", Ложь, "Устанавливать 32-разрядный дистрибутив OneScript")
.ВОкружении("OVM_INSTALL_X86");
КонецЕсли;

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

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

УстановщикOneScript = Новый УстановщикOneScript();

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

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

Если ВыполнятьУстановкуПриНеобходимости Тогда
УстановщикOneScript = Новый УстановщикOneScript();
УстановщикOneScript.УстановитьOneScript(ИспользуемаяВерсия);
УстановщикOneScript.УстановитьOneScript(ИспользуемаяВерсия, , , СистемнаяИнформация.Это64БитнаяОперационнаяСистема);
Иначе
ВызватьИсключение СтрШаблон("Не обнаружена требуемая версия <%1>", ИспользуемаяВерсия);
КонецЕсли;
Expand Down
38 changes: 31 additions & 7 deletions src/core/Классы/УстановщикOneScript.os
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#Использовать fs
#Использовать tempfiles
#Использовать logos
#Использовать strings

Перем ЭтоWindows;
Перем Лог;
Expand All @@ -18,9 +19,14 @@
Процедура УстановитьOneScript(
Знач ВерсияКУстановке,
Знач АлиасВерсии = "",
Знач ОчищатьКаталогУстановки = Истина
Знач ОчищатьКаталогУстановки = Истина,
Знач ИспользоватьХ64 = Ложь
) Экспорт

Если ИспользоватьХ64 Тогда
ИспользоватьХ64 = ПроверитьВозможностьУстановкиX64(ВерсияКУстановке);
КонецЕсли;

Лог.Информация("Установка OneScript %1...", ВерсияКУстановке);

Если НЕ ЗначениеЗаполнено(АлиасВерсии) Тогда
Expand All @@ -42,7 +48,7 @@
Лог.Отладка("Каталог установки версии: %1", КаталогУстановкиВерсии);

Попытка
ФайлУстановщика = СкачатьФайлУстановщика(ВерсияКУстановке);
ФайлУстановщика = СкачатьФайлУстановщика(ВерсияКУстановке, ИспользоватьХ64);

УстановитьOneScriptИзZipАрхива(ФайлУстановщика, КаталогУстановкиВерсии);
ДобавитьSHСкриптыПриНеобходимости(КаталогУстановкиВерсии);
Expand All @@ -56,9 +62,9 @@

КонецПроцедуры

Функция СкачатьФайлУстановщика(Знач ВерсияКУстановке)
Функция СкачатьФайлУстановщика(Знач ВерсияКУстановке, Знач ИспользоватьХ64)

Лог.Информация("Скачиваю установщик версии %1...", ВерсияКУстановке);
Лог.Информация("Скачиваю установщик версии %1%2...", ВерсияКУстановке, ?(ИспользоватьХ64, "-x64", ""));

ПутьКСохраняемомуФайлу = ВременныеФайлы.НовоеИмяФайла("zip");

Expand Down Expand Up @@ -103,7 +109,7 @@
Таймаут
);

Ресурс = ПолучитьПутьКСкачиваниюФайла(ВерсияКУстановке);
Ресурс = ПолучитьПутьКСкачиваниюФайла(ВерсияКУстановке, ИспользоватьХ64);
Запрос = Новый HTTPЗапрос(Ресурс);

Лог.Отладка("Сервер: %1. Ресурс: %2", Соединение.Сервер, Ресурс);
Expand Down Expand Up @@ -215,7 +221,7 @@
КонецЕсли;
КонецПроцедуры

Функция ПолучитьПутьКСкачиваниюФайла(Знач ВерсияКУстановке)
Функция ПолучитьПутьКСкачиваниюФайла(Знач ВерсияКУстановке, Знач ИспользоватьХ64)

Если СтрРазделить(ВерсияКУстановке, ".").Количество() = ПараметрыOVM.КоличествоРазрядовВНомереВерсии() Тогда
КаталогВерсии = СтрЗаменить(ВерсияКУстановке, ".", "_");
Expand All @@ -228,11 +234,29 @@
КонецЕсли;
ИмяФайла = "zip";

Ресурс = СтрШаблон("downloads/%1/%2", КаталогВерсии, ИмяФайла);
ЧастиПути = Новый Массив;
ЧастиПути.Добавить("downloads");
ЧастиПути.Добавить(КаталогВерсии);
Если ИспользоватьХ64 Тогда
ЧастиПути.Добавить("x64");
КонецЕсли;
ЧастиПути.Добавить(ИмяФайла);

Ресурс = СтрСоединить(ЧастиПути, "/");
Возврат Ресурс;

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

Функция ПроверитьВозможностьУстановкиX64(ВерсияКУстановке)
// Версия х64 доступна для версий 1.2.0 и выше
Если НРег(ВерсияКУстановке) = "stable"
Или НРег(ВерсияКУстановке) = "dev" Тогда
Возврат Истина;
Иначе
Возврат СтроковыеФункции.СравнитьВерсии(ВерсияКУстановке, "1.2.0") >= 0;
КонецЕсли;
КонецФункции

СистемнаяИнформация = Новый СистемнаяИнформация;
ЭтоWindows = Найти(ВРег(СистемнаяИнформация.ВерсияОС), "WINDOWS") > 0;

Expand Down
8 changes: 8 additions & 0 deletions src/core/Модули/ПараметрыOVM.os
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,14 @@
Возврат АдресСайтаОСкрипт() + "/downloads";
КонецФункции

// Разрядность текущей операционной системы
//
// Возвращаемое значение:
// Булево - это 64 битная операционна система
Функция Это64БитнаяОперационнаяСистема() Экспорт
Возврат СистемнаяИнформация.Это64БитнаяОперационнаяСистема;
КонецФункции

// Количество разрядов в номере версии.
// В приложении используется версионирование вида 1.0.20
//
Expand Down

0 comments on commit cd34333

Please sign in to comment.