|
1 | 1 | #Использовать logos |
2 | 2 | #Использовать tempfiles |
3 | 3 | #Использовать fs |
4 | | -#Использовать semver |
| 4 | +#Использовать edtfind |
5 | 5 |
|
6 | 6 | Перем Лог; |
7 | 7 | Перем Обработчик; |
|
15 | 15 |
|
16 | 16 | Перем ИмяФайлаДампаКонфигурации; |
17 | 17 | Перем ИмяФайлаИзменений; |
| 18 | +Перем Использовать1cedtcli; |
18 | 19 |
|
19 | 20 | #Область Интерфейс_плагина |
20 | 21 |
|
|
210 | 211 |
|
211 | 212 | ИсполняемыйФайл = ""; |
212 | 213 |
|
213 | | - КаталогEDT = УточнитьВерсиюEDT(); |
214 | | - |
215 | | - Если Лев(ВерсияEDT, 4) >= "2024" Тогда // BSLLS:MagicNumber-off |
216 | | - ИсполняемыйФайл = НайтиEdtcli(КаталогEDT); |
217 | | - Иначе |
218 | | - ИсполняемыйФайл = НайтиRing(); |
219 | | - КонецЕсли; |
220 | | - |
221 | | - Возврат ИсполняемыйФайл; |
222 | | - |
223 | | -КонецФункции |
224 | | - |
225 | | -Функция УточнитьВерсиюEDT() |
226 | | - |
227 | | - ВсеВерсииEDT = НайтиВсеУстановленныеEDT(); |
| 214 | + ОбъектПоиска = Новый ПоискEDT(); |
| 215 | + РезультатПоиска = ОбъектПоиска.НайтиИнформациюОEDT(ВерсияEDT); |
228 | 216 |
|
229 | 217 | Если Не ЗначениеЗаполнено(ВерсияEDT) Тогда |
230 | | - |
231 | | - Лог.Информация("Версия EDT не передана через параметры, выполняется поиск максимальной установленной версии."); |
232 | | - |
233 | | - ВерсияEDT = ВсеВерсииEDT.Версии[0]; |
234 | | - КаталогEDT = ВсеВерсииEDT.КаталогиEDT.Получить(ВсеВерсииEDT.Версии[0]); |
235 | | - Лог.Информация("Версия EDT определена автоматически: %1, каталог %2", ВерсияEDT, КаталогEDT); |
| 218 | + Лог.Информация("Версия EDT не передана через параметры, определена автоматически: %1", РезультатПоиска.ВерсияEDT); |
| 219 | + ВерсияEDT = РезультатПоиска.ВерсияEDT; |
| 220 | + КонецЕсли; |
236 | 221 |
|
237 | | - Возврат КаталогEDT; |
| 222 | + Лог.Информация("Версия EDT: %1, каталог %2", РезультатПоиска.ВерсияEDT, РезультатПоиска.КаталогEDT); |
238 | 223 |
|
| 224 | + Использовать1cedtcli = ЗначениеЗаполнено(РезультатПоиска.ПутьКcli); |
| 225 | + Если Использовать1cedtcli Тогда |
| 226 | + ИсполняемыйФайл = РезультатПоиска.ПутьКcli; |
239 | 227 | Иначе |
240 | | - |
241 | | - Возврат ВсеВерсииEDT.КаталогиEDT.Получить(ВерсияEDT); |
242 | | - |
| 228 | + ИсполняемыйФайл = НайтиRing(); |
243 | 229 | КонецЕсли; |
244 | 230 |
|
| 231 | + Возврат ИсполняемыйФайл; |
| 232 | + |
245 | 233 | КонецФункции |
246 | 234 |
|
247 | 235 | // Функция - получает команду запуска утилиты ring или 1cedtcli для выполнения конвертации |
|
254 | 242 | Команда = Новый Команда; |
255 | 243 | Команда.УстановитьКоманду(ОпределитьИсполняемыйФайл()); |
256 | 244 |
|
257 | | - Если Лев(ВерсияEDT, 4) >= "2024" Тогда // BSLLS:MagicNumber-off |
| 245 | + Если Использовать1cedtcli Тогда |
258 | 246 | КомандаEdtcli(Команда, КаталогВыгрузки, РабочееПространство, КаталогПроекта); |
259 | 247 | Иначе |
260 | 248 | КомандаRing(Команда, КаталогВыгрузки, РабочееПространство, КаталогПроекта); |
|
334 | 322 |
|
335 | 323 | КонецФункции |
336 | 324 |
|
337 | | -// Функция - выполняет поиск утилиты 1cedtcli и возвращает полный путь к утилите |
338 | | -// |
339 | | -// Возвращаемое значение: |
340 | | -// Строка - полный путь к утилите 1cedtcli |
341 | | -// |
342 | | -Функция НайтиEdtcli(КаталогEDT) Экспорт |
343 | | - |
344 | | - Расширение = ""; |
345 | | - Если ЭтоWindows() Тогда |
346 | | - Расширение = ".exe"; |
347 | | - КонецЕсли; |
348 | | - |
349 | | - ИсполняемыйФайл = СтрШаблон("1cedtcli%1", Расширение); |
350 | | - Лог.Информация("Ищу %1 в %2", ИсполняемыйФайл, КаталогEDT); |
351 | | - НайденныеФайлы = НайтиФайлы(КаталогEDT, ИсполняемыйФайл, Истина); |
352 | | - |
353 | | - Если НайденныеФайлы.Количество() = 0 Тогда |
354 | | - ВызватьИсключение "1cedtcli не найден"; |
355 | | - КонецЕсли; |
356 | | - |
357 | | - Результат = НайденныеФайлы[0].ПолноеИмя; |
358 | | - Лог.Информация("Найден исполняемый файл %1", Результат); |
359 | | - Возврат Результат; |
360 | | - |
361 | | -КонецФункции |
362 | | - |
363 | 325 | Функция ОбернутьВКавычки(Знач Строка) |
364 | 326 | Возврат """" + Строка + """"; |
365 | 327 | КонецФункции |
|
376 | 338 |
|
377 | 339 | КонецФункции // ЭтоWindows() |
378 | 340 |
|
379 | | -// Функция - выполняет поиск всех установленных версий EDT |
380 | | -// |
381 | | -// Возвращаемое значение: |
382 | | -// Структура - отсортированные версии и пути к исполняемым файлам |
383 | | -// |
384 | | -Функция НайтиВсеУстановленныеEDT() |
385 | | - |
386 | | - КаталогиEDT = Новый Соответствие; |
387 | | - ВерсииДляСортировки = Новый Массив; |
388 | | - |
389 | | - КаталогиПоиска = КаталогиУстановкиЕДТПоУмолчанию(); |
390 | | - |
391 | | - РВ = Новый РегулярноеВыражение("1c[-|_]edt[-| ](\d+\.\d+(?:\.\d)*)"); |
392 | | - РВ.ИгнорироватьРегистр = Истина; |
393 | | - |
394 | | - Для Каждого КаталогПоиска Из КаталогиПоиска Цикл |
395 | | - |
396 | | - Лог.Информация("Ищу версии EDT в каталоге ""%1""", КаталогПоиска); |
397 | | - |
398 | | - ФайлыIni = НайтиФайлы(КаталогПоиска, "1cedt.ini", Истина); |
399 | | - Файлы = НайтиФайлы(КаталогПоиска, "1cedt", Истина); |
400 | | - |
401 | | - Для Каждого Файл Из ФайлыIni Цикл |
402 | | - Файлы.Добавить(Файл); |
403 | | - КонецЦикла; |
404 | | - |
405 | | - Для Каждого ТекФайл Из Файлы Цикл |
406 | | - |
407 | | - Лог.Информация("Ищу совпадения регулярного выражения с именем файла ""%1""", ТекФайл.Путь); |
408 | | - КаталогВерсии = Новый Файл(ТекФайл.Путь); |
409 | | - Совпадения = РВ.НайтиСовпадения(КаталогВерсии.Имя); |
410 | | - |
411 | | - Если Совпадения.Количество() = 0 Тогда |
412 | | - Продолжить; |
413 | | - КонецЕсли; |
414 | | - |
415 | | - НайденнаяВерсия = Совпадения[0].Группы[1].Значение; |
416 | | - |
417 | | - КаталогиEDT.Вставить(НайденнаяВерсия, ТекФайл.Путь); |
418 | | - ВерсииДляСортировки.Добавить(НайденнаяВерсия); |
419 | | - |
420 | | - Лог.Информация("Найдена версия EDT ""%1"" в каталоге ""%2"".", НайденнаяВерсия, ТекФайл.Путь); |
421 | | - КонецЦикла; |
422 | | - КонецЦикла; |
423 | | - |
424 | | - Версии.СортироватьВерсии(ВерсииДляСортировки, "УБЫВ"); |
425 | | - |
426 | | - Если ВерсииДляСортировки.Количество() = 0 Тогда |
427 | | - ВызватьИсключение "Не найдено ни одной установленной версии EDT"; |
428 | | - КонецЕсли; |
429 | | - |
430 | | - Возврат Новый Структура("Версии, КаталогиEDT", ВерсииДляСортировки, КаталогиEDT); |
431 | | - |
432 | | -КонецФункции |
433 | | - |
434 | | -// скопировано из yard, код Abramov Dmitry |
435 | | -Функция КаталогиУстановкиЕДТПоУмолчанию() |
436 | | - |
437 | | - СистемнаяИнформация = Новый СистемнаяИнформация(); |
438 | | - Массив = Новый Массив(); |
439 | | - Если ЭтоWindows() Тогда |
440 | | - Массив.Добавить(ОбъединитьПути(СистемнаяИнформация.ПолучитьПутьПапки(СпециальнаяПапка.ЛокальныйКаталогДанныхПриложений), "1C\1cedtstart\installations")); |
441 | | - Массив.Добавить("C:\Program Files\1C\1CE\components"); |
442 | | - Иначе |
443 | | - Массив.Добавить("~/.local/share/1C/1cedtstart/installations"); |
444 | | - Массив.Добавить("/opt/1C/1CE/components"); |
445 | | - КонецЕсли; |
446 | | - |
447 | | - Возврат Массив; |
448 | | - |
449 | | -КонецФункции |
450 | | - |
451 | 341 | Процедура ДополнитьИнкрементнуюВыгрузкуПроекта(Конфигуратор, КаталогВыгрузки) |
452 | 342 |
|
453 | 343 | ПутьКФайлуДополнительнойВыгрузки = ВременныеФайлы.НовоеИмяФайла(); |
|
0 commit comments