Skip to content

Commit 7c5d66b

Browse files
authored
Merge pull request #23 from oscript-library/develop
1.2.0
2 parents 186e1bd + 8683aa2 commit 7c5d66b

6 files changed

+173
-136
lines changed

packagedef

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Описание.Имя("ovm")
2-
.Версия("1.0.0")
2+
.Версия("1.2.0")
33
.Автор("Nikita Gryzlov")
44
.АдресАвтора("nixel2007@gmail.com")
55
.Описание("OneScript Version Manager")
@@ -14,5 +14,7 @@
1414
.ЗависитОт("autumn", "3.2.0")
1515
.ЗависитОт("autumn-logos", "1.1.1")
1616
.ЗависитОт("autumn-cli", "1.0.3")
17+
.ЗависитОт("collectionos", "0.3.0")
18+
.РазработкаЗависитОт("1bdd", "1.13.0")
1719
.ИсполняемыйФайл("src/cmd/ovm.os", "ovm")
1820
;

src/cmd/Классы/КомандаInstall.os

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
//
2121
Процедура ОписаниеКоманды(КомандаПриложения) Экспорт
2222

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

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

35+
КомандаПриложения.Опция("fdd", Ложь, "Устанавливать fdd дистрибутив OneScript (требует установленный .NET для работы)")
36+
.ВОкружении("OVM_INSTALL_FDD");
37+
3538
КомандаПриложения.Аргумент(
3639
"VERSION",
3740
,
3841
"Устанавливаемая версия (версии) OneScript. " +
39-
"Допустимо использовать трехномерные версии (1.0.17, 1.0.18), stable, dev. " +
42+
"Допустимо использовать трехномерные версии (1.0.17, 1.0.18), " +
43+
"lts, stable, dev, preview, lts-dev " +
4044
"Может быть передано несколько значений")
4145
.ТМассивСтрок()
4246
.ВОкружении("OVM_INSTALL_VERSION");
@@ -52,20 +56,25 @@
5256

5357
МассивВерсийКУстановке = КомандаПриложения.ЗначениеАргумента("VERSION");
5458
АлиасВерсии = КомандаПриложения.ЗначениеОпции("name");
55-
ОчищатьКаталогУстановки = КомандаПриложения.ЗначениеОпции("clean");
59+
60+
ДополнительныеПараметры = УстановщикOneScript.ДополнительныеПараметрыУстановки();
61+
62+
ДополнительныеПараметры.ОчищатьКаталогУстановки = КомандаПриложения.ЗначениеОпции("clean");
5663

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

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

74+
ДополнительныеПараметры.ИспользоватьFDD = КомандаПриложения.ЗначениеОпции("fdd");
75+
6776
Для Каждого ВерсияКУстановке Из МассивВерсийКУстановке Цикл
68-
УстановщикOneScript.УстановитьOneScript(ВерсияКУстановке, АлиасВерсии, ОчищатьКаталогУстановки, ИспользоватьХ64);
77+
УстановщикOneScript.УстановитьOneScript(ВерсияКУстановке, АлиасВерсии, ДополнительныеПараметры);
6978
КонецЦикла;
7079

7180
Если МассивВерсийКУстановке.Количество() > 0 Тогда

src/core/Классы/АктиваторOneScript.os

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,11 @@
258258

259259
Если ВыполнятьУстановкуПриНеобходимости Тогда
260260
УстановщикOneScript = Новый УстановщикOneScript();
261-
УстановщикOneScript.УстановитьOneScript(ИспользуемаяВерсия, , , СистемнаяИнформация.Это64БитнаяОперационнаяСистема);
261+
262+
ДополнительныеПараметры = УстановщикOneScript.ДополнительныеПараметрыУстановки();
263+
ДополнительныеПараметры.ИспользоватьХ64 = СистемнаяИнформация.Это64БитнаяОперационнаяСистема;
264+
265+
УстановщикOneScript.УстановитьOneScript(ИспользуемаяВерсия, , ДополнительныеПараметры);
262266
Иначе
263267
ВызватьИсключение СтрШаблон("Не обнаружена требуемая версия <%1>", ИспользуемаяВерсия);
264268
КонецЕсли;

src/core/Классы/ВерсииOneScript.os

Lines changed: 65 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#Использовать 1commands
22
#Использовать fluent
33
#Использовать fs
4+
#Использовать collectionos
45

56
&ЛогOVM
67
Перем Лог;
@@ -9,11 +10,42 @@
910
Перем ПараметрыOVM;
1011

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

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

19+
Функция ДопустимыеАлиасы() Экспорт
20+
21+
Если ДопустимыеАлиасы = Неопределено Тогда
22+
23+
ДопустимыеАлиасы = Новый КартаСоответствие;
24+
25+
ДопустимыеАлиасы.Вставить("lts", Версия("lts", Ложь));
26+
ДопустимыеАлиасы.Вставить("stable", Версия("latest", Ложь));
27+
ДопустимыеАлиасы.Вставить("dev", Версия("night-build", Истина));
28+
29+
ДопустимыеАлиасы.Вставить("preview", Версия("preview", Истина));
30+
ДопустимыеАлиасы.Вставить("lts-dev", Версия("latest-dev", Ложь));
31+
32+
КонецЕсли;
33+
34+
Возврат ДопустимыеАлиасы;
35+
36+
КонецФункции
37+
38+
Функция Версия(Метка, ЭтоВерсия2)
39+
40+
Результат = Новый Структура;
41+
42+
Результат.Вставить("Метка", Метка);
43+
Результат.Вставить("ЭтоВерсия2", ЭтоВерсия2);
44+
45+
Возврат Результат;
46+
47+
КонецФункции
48+
1749
// Проверить, что версия установлена
1850
//
1951
// Параметры:
@@ -28,9 +60,13 @@
2860
КаталогУстановкиВерсии = ОбъединитьПути(КаталогУстановки, ПроверяемаяВерсия);
2961

3062
СуществуетКаталогУстановкиВерсии = ФС.КаталогСуществует(КаталогУстановкиВерсии);
31-
СуществуетOscriptExe = ФС.ФайлСуществует(ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript.exe"));
32-
ЭтоКаталогВерсии2 = ЭтоКаталогВерсии2(КаталогУстановкиВерсии);
33-
Результат = СуществуетКаталогУстановкиВерсии И (СуществуетOscriptExe ИЛИ ЭтоКаталогВерсии2);
63+
СуществуетИсполняемыйФайл =
64+
ФС.ФайлСуществует(ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript.exe")) // SCD
65+
Или ФС.ФайлСуществует(ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript")) // SCD
66+
Или ФС.ФайлСуществует(ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript.bat")) // FDD
67+
Или ФС.ФайлСуществует(ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript.sh")); // FDD
68+
69+
Результат = СуществуетКаталогУстановкиВерсии И СуществуетИсполняемыйФайл;
3470

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

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

70-
// Проверяет, что переданный каталог является каталогом OneScript 2.0+
71-
//
72-
// Параметры:
73-
// КаталогУстановкиВерсии - Строка - Путь к конкретной версии.
74-
//
75-
// Возвращаемое значение:
76-
// Булево
77-
//
78-
Функция ЭтоКаталогВерсии2(КаталогУстановкиВерсии) Экспорт
79-
Возврат ФС.ФайлСуществует(ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript.dll"));
80-
КонецФункции
81-
82-
// Получает путь к исполняемому файлу OneScript по шаблону версии 1.x.
106+
// Получает путь к исполняемому файлу OneScript
83107
//
84108
// Параметры:
85109
// КаталогУстановкиВерсии - Строка - Путь к конкретной версии.
86110
//
87111
// Возвращаемое значение:
88112
// Строка - Путь к исполняемому файлу.
89113
//
90-
Функция ПутьКИсполняемомуФайлуВерсии1(КаталогУстановкиВерсии) Экспорт
114+
Функция ПутьКИсполняемомуФайлу(КаталогУстановкиВерсии) Экспорт
91115

92116
ПутьКИсполняемомуФайлу = ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript");
93-
Если ЭтоWindows Тогда
117+
118+
Если ЭтоWindows И ФС.ФайлСуществует(ПутьКИсполняемомуФайлу + ".exe") Тогда
94119
ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлу + ".exe";
95-
КонецЕсли;
96-
97-
Возврат ПутьКИсполняемомуФайлу;
98-
99-
КонецФункции
100-
101-
// Получает путь к исполняемому файлу OneScript по шаблону версии 1.x.
102-
//
103-
// Параметры:
104-
// КаталогУстановкиВерсии - Строка - Путь к конкретной версии.
105-
//
106-
// Возвращаемое значение:
107-
// Строка - Путь к исполняемому файлу.
108-
//
109-
Функция ПутьКИсполняемомуФайлуВерсии2(КаталогУстановкиВерсии) Экспорт
110-
111-
ПутьКИсполняемомуФайлу = ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript");
112-
Если ЭтоWindows Тогда
120+
ИначеЕсли ЭтоWindows Тогда
113121
ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлу + ".bat";
114-
КонецЕсли;
122+
ИначеЕсли ФС.ФайлСуществует(ПутьКИсполняемомуФайлу + ".sh") Тогда
123+
ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлу + ".sh";
124+
КонецЕсли; // BSLLS:IfElseIfEndsWithElse-off
115125

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

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

252-
ОбеспечитьСтрокуВерсииПоАлиасу(ДоступныеВерсии, "dev", "Путь");
253-
ОбеспечитьСтрокуВерсииПоАлиасу(ДоступныеВерсии, "stable", "Путь");
262+
Итератор = ДопустимыеАлиасы().Ключи().Итератор();
263+
264+
Пока Итератор.ЕстьСледующий() Цикл
265+
ОбеспечитьСтрокуВерсииПоАлиасу(ДоступныеВерсии, Итератор.Следующий(), "Путь");
266+
КонецЦикла;
254267

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

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

294-
Для Каждого УстановленнаяВерсия Из СписокУстановленныхВерсий Цикл
307+
Для Каждого УстановленнаяВерсия Из СписокУстановленныхВерсий Цикл
295308
СтрокаВсеВерсии = ВсеВерсии.Найти(УстановленнаяВерсия.Алиас, "Алиас");
296309
Если СтрокаВсеВерсии = Неопределено Тогда
297310
СтрокаВсеВерсии = ВсеВерсии.Добавить();
298311
СтрокаВсеВерсии.Алиас = УстановленнаяВерсия.Алиас;
299-
СтрокаВсеВерсии.ЭтоСимлинк = УстановленнаяВерсия.ЭтоСимлинк;
312+
СтрокаВсеВерсии.ЭтоСимлинк = УстановленнаяВерсия.ЭтоСимлинк;
300313
КонецЕсли;
301-
314+
302315
СтрокаВсеВерсии.Версия = УстановленнаяВерсия.Версия;
303316
СтрокаВсеВерсии.ПутьЛокальный = УстановленнаяВерсия.Путь;
304317
СтрокаВсеВерсии.ВерсияУстановлена = Истина;
305318
КонецЦикла;
306-
307-
ОбеспечитьСтрокуВерсииПоАлиасу(ВсеВерсии, "dev");
308-
ОбеспечитьСтрокуВерсииПоАлиасу(ВсеВерсии, "stable");
319+
320+
Итератор = ДопустимыеАлиасы().Ключи().Итератор();
321+
322+
Пока Итератор.ЕстьСледующий() Цикл
323+
ОбеспечитьСтрокуВерсииПоАлиасу(ВсеВерсии, Итератор.Следующий());
324+
КонецЦикла;
309325

310326
ВсеВерсии.Сортировать("Алиас");
311-
327+
312328
Возврат ВсеВерсии;
313329

314330
КонецФункции
@@ -331,13 +347,7 @@
331347
Новый Структура("УстановленнаяВерсия", УстановленнаяВерсия)
332348
)
333349
.Первые(1)
334-
.Обработать("(Элемент) ->
335-
|Если ЭтоКаталогВерсии2(Элемент.Путь) Тогда
336-
| Возврат ПутьКИсполняемомуФайлуВерсии2(Элемент.Путь);
337-
|Иначе
338-
| Возврат ПутьКИсполняемомуФайлуВерсии1(Элемент.Путь);
339-
|КонецЕсли;
340-
|", ЭтотОбъект)
350+
.Обработать("(Элемент) -> ПутьКИсполняемомуФайлу(Элемент.Путь);", ЭтотОбъект)
341351
.ПолучитьПервый();
342352

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

362372
КаталогУстановки = ПараметрыOVM.КаталогУстановкиПоУмолчанию();
363373
КаталогУстановкиВерсии = ОбъединитьПути(КаталогУстановки, ПроверяемаяВерсия);
364-
ЭтоКаталогВерсии2 = ЭтоКаталогВерсии2(КаталогУстановкиВерсии);
365-
Если ЭтоКаталогВерсии2 Тогда
366-
ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлуВерсии2(КаталогУстановкиВерсии);
367-
Иначе
368-
ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлуВерсии1(КаталогУстановкиВерсии);
369-
КонецЕсли;
370-
374+
ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлу(КаталогУстановкиВерсии);
375+
371376
Команда = Новый Команда();
372377
Команда.УстановитьКоманду(ПутьКИсполняемомуФайлу);
373378
Команда.ДобавитьПараметр("-version");

src/core/Классы/ПараметрыПриложения.os

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,5 @@
1212
КонецФункции
1313

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

0 commit comments

Comments
 (0)