|
1 | 1 | #Использовать 1commands
|
2 | 2 | #Использовать fluent
|
3 | 3 | #Использовать fs
|
| 4 | +#Использовать collectionos |
4 | 5 |
|
5 | 6 | &ЛогOVM
|
6 | 7 | Перем Лог;
|
|
9 | 10 | Перем ПараметрыOVM;
|
10 | 11 |
|
11 | 12 | Перем ЭтоWindows;
|
| 13 | +Перем ДопустимыеАлиасы; // Кеш коллекции допустимых алиасов |
12 | 14 |
|
13 | 15 | &Желудь
|
14 | 16 | Процедура ПриСозданииОбъекта()
|
15 | 17 | КонецПроцедуры
|
16 | 18 |
|
| 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 | + |
17 | 49 | // Проверить, что версия установлена
|
18 | 50 | //
|
19 | 51 | // Параметры:
|
|
28 | 60 | КаталогУстановкиВерсии = ОбъединитьПути(КаталогУстановки, ПроверяемаяВерсия);
|
29 | 61 |
|
30 | 62 | СуществуетКаталогУстановкиВерсии = ФС.КаталогСуществует(КаталогУстановкиВерсии);
|
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 | + Результат = СуществуетКаталогУстановкиВерсии И СуществуетИсполняемыйФайл; |
34 | 70 |
|
35 | 71 | Лог.Отладка("Версия %1 установлена: %2", ПроверяемаяВерсия, Результат);
|
36 | 72 | Возврат Результат;
|
|
67 | 103 |
|
68 | 104 | КонецФункции
|
69 | 105 |
|
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 |
83 | 107 | //
|
84 | 108 | // Параметры:
|
85 | 109 | // КаталогУстановкиВерсии - Строка - Путь к конкретной версии.
|
86 | 110 | //
|
87 | 111 | // Возвращаемое значение:
|
88 | 112 | // Строка - Путь к исполняемому файлу.
|
89 | 113 | //
|
90 |
| -Функция ПутьКИсполняемомуФайлуВерсии1(КаталогУстановкиВерсии) Экспорт |
| 114 | +Функция ПутьКИсполняемомуФайлу(КаталогУстановкиВерсии) Экспорт |
91 | 115 |
|
92 | 116 | ПутьКИсполняемомуФайлу = ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript");
|
93 |
| - Если ЭтоWindows Тогда |
| 117 | + |
| 118 | + Если ЭтоWindows И ФС.ФайлСуществует(ПутьКИсполняемомуФайлу + ".exe") Тогда |
94 | 119 | ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлу + ".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 Тогда |
113 | 121 | ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлу + ".bat";
|
114 |
| - КонецЕсли; |
| 122 | + ИначеЕсли ФС.ФайлСуществует(ПутьКИсполняемомуФайлу + ".sh") Тогда |
| 123 | + ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлу + ".sh"; |
| 124 | + КонецЕсли; // BSLLS:IfElseIfEndsWithElse-off |
115 | 125 |
|
116 | 126 | Возврат ПутьКИсполняемомуФайлу;
|
117 | 127 |
|
|
249 | 259 | ДоступнаяВерсия.Путь = АдресСайтаОСкрипт + ГруппаАдрес.Значение;
|
250 | 260 | КонецЦикла;
|
251 | 261 |
|
252 |
| - ОбеспечитьСтрокуВерсииПоАлиасу(ДоступныеВерсии, "dev", "Путь"); |
253 |
| - ОбеспечитьСтрокуВерсииПоАлиасу(ДоступныеВерсии, "stable", "Путь"); |
| 262 | + Итератор = ДопустимыеАлиасы().Ключи().Итератор(); |
| 263 | + |
| 264 | + Пока Итератор.ЕстьСледующий() Цикл |
| 265 | + ОбеспечитьСтрокуВерсииПоАлиасу(ДоступныеВерсии, Итератор.Следующий(), "Путь"); |
| 266 | + КонецЦикла; |
254 | 267 |
|
255 | 268 | Возврат ДоступныеВерсии;
|
256 | 269 |
|
|
291 | 304 | СтрокаВсеВерсии.ПутьСервер = ДоступнаяВерсия.Путь;
|
292 | 305 | КонецЦикла;
|
293 | 306 |
|
294 |
| - Для Каждого УстановленнаяВерсия Из СписокУстановленныхВерсий Цикл |
| 307 | + Для Каждого УстановленнаяВерсия Из СписокУстановленныхВерсий Цикл |
295 | 308 | СтрокаВсеВерсии = ВсеВерсии.Найти(УстановленнаяВерсия.Алиас, "Алиас");
|
296 | 309 | Если СтрокаВсеВерсии = Неопределено Тогда
|
297 | 310 | СтрокаВсеВерсии = ВсеВерсии.Добавить();
|
298 | 311 | СтрокаВсеВерсии.Алиас = УстановленнаяВерсия.Алиас;
|
299 |
| - СтрокаВсеВерсии.ЭтоСимлинк = УстановленнаяВерсия.ЭтоСимлинк; |
| 312 | + СтрокаВсеВерсии.ЭтоСимлинк = УстановленнаяВерсия.ЭтоСимлинк; |
300 | 313 | КонецЕсли;
|
301 |
| - |
| 314 | + |
302 | 315 | СтрокаВсеВерсии.Версия = УстановленнаяВерсия.Версия;
|
303 | 316 | СтрокаВсеВерсии.ПутьЛокальный = УстановленнаяВерсия.Путь;
|
304 | 317 | СтрокаВсеВерсии.ВерсияУстановлена = Истина;
|
305 | 318 | КонецЦикла;
|
306 |
| - |
307 |
| - ОбеспечитьСтрокуВерсииПоАлиасу(ВсеВерсии, "dev"); |
308 |
| - ОбеспечитьСтрокуВерсииПоАлиасу(ВсеВерсии, "stable"); |
| 319 | + |
| 320 | + Итератор = ДопустимыеАлиасы().Ключи().Итератор(); |
| 321 | + |
| 322 | + Пока Итератор.ЕстьСледующий() Цикл |
| 323 | + ОбеспечитьСтрокуВерсииПоАлиасу(ВсеВерсии, Итератор.Следующий()); |
| 324 | + КонецЦикла; |
309 | 325 |
|
310 | 326 | ВсеВерсии.Сортировать("Алиас");
|
311 |
| - |
| 327 | + |
312 | 328 | Возврат ВсеВерсии;
|
313 | 329 |
|
314 | 330 | КонецФункции
|
|
331 | 347 | Новый Структура("УстановленнаяВерсия", УстановленнаяВерсия)
|
332 | 348 | )
|
333 | 349 | .Первые(1)
|
334 |
| - .Обработать("(Элемент) -> |
335 |
| - |Если ЭтоКаталогВерсии2(Элемент.Путь) Тогда |
336 |
| - | Возврат ПутьКИсполняемомуФайлуВерсии2(Элемент.Путь); |
337 |
| - |Иначе |
338 |
| - | Возврат ПутьКИсполняемомуФайлуВерсии1(Элемент.Путь); |
339 |
| - |КонецЕсли; |
340 |
| - |", ЭтотОбъект) |
| 350 | + .Обработать("(Элемент) -> ПутьКИсполняемомуФайлу(Элемент.Путь);", ЭтотОбъект) |
341 | 351 | .ПолучитьПервый();
|
342 | 352 |
|
343 | 353 | Возврат ПутьКУстановленнойВерсии;
|
|
361 | 371 |
|
362 | 372 | КаталогУстановки = ПараметрыOVM.КаталогУстановкиПоУмолчанию();
|
363 | 373 | КаталогУстановкиВерсии = ОбъединитьПути(КаталогУстановки, ПроверяемаяВерсия);
|
364 |
| - ЭтоКаталогВерсии2 = ЭтоКаталогВерсии2(КаталогУстановкиВерсии); |
365 |
| - Если ЭтоКаталогВерсии2 Тогда |
366 |
| - ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлуВерсии2(КаталогУстановкиВерсии); |
367 |
| - Иначе |
368 |
| - ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлуВерсии1(КаталогУстановкиВерсии); |
369 |
| - КонецЕсли; |
370 |
| - |
| 374 | + ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлу(КаталогУстановкиВерсии); |
| 375 | + |
371 | 376 | Команда = Новый Команда();
|
372 | 377 | Команда.УстановитьКоманду(ПутьКИсполняемомуФайлу);
|
373 | 378 | Команда.ДобавитьПараметр("-version");
|
|
0 commit comments