|
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