From 75befef4dfb87540bdcb841fa74a3a93f3308c5c Mon Sep 17 00:00:00 2001 From: Nikita Gryzlov Date: Tue, 30 Jan 2018 13:31:48 +0300 Subject: [PATCH] =?UTF-8?q?#3=20=D0=9B=D0=BE=D0=B3=D0=B8=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BF=D1=80=D0=BE=D1=86=D0=B5=D1=81?= =?UTF-8?q?=D1=81=D0=B0=20=D1=83=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0\262\321\211\320\270\320\272OneScript.os" | 58 +++++++++++++++++-- 1 file changed, 52 insertions(+), 6 deletions(-) diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272OneScript.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272OneScript.os" index 8a343e7..c9ca092 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272OneScript.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272OneScript.os" @@ -3,9 +3,12 @@ #Использовать tempfiles Перем ЭтоWindows; +Перем Лог; Процедура УстановитьOneScript(Знач ВерсияКУстановке) Экспорт + Лог.Информация("Установка OneScript %1...", ВерсияКУстановке); + ПроверитьКорректностьПереданнойВерсии(ВерсияКУстановке); КаталогУстановки = ПараметрыOVM.КаталогУстановкиПоУмолчанию(); @@ -13,33 +16,53 @@ ФС.ОбеспечитьКаталог(КаталогУстановки); ФС.ОбеспечитьПустойКаталог(КаталогУстановкиВерсии); + Лог.Отладка("Каталог установки версии: %1", КаталогУстановкиВерсии); + ФайлУстановщика = СкачатьФайлУстановщика(ВерсияКУстановке); - + УстановитьOneScriptИзZipАрхива(ФайлУстановщика, КаталогУстановкиВерсии); ДобавитьSHScriptПриНеобходимости(КаталогУстановкиВерсии); - + + Лог.Информация("Установка OneScript %1 завершена", ВерсияКУстановке); + КонецПроцедуры Функция СкачатьФайлУстановщика(Знач ВерсияКУстановке) + Лог.Информация("Скачиваю установщик версии %1...", ВерсияКУстановке); + ПутьКСохраняемомуФайлу = ВременныеФайлы.НовоеИмяФайла("zip"); Ресурс = ПолучитьПутьКСкачиваниюФайла(ВерсияКУстановке); Соединение = Новый HTTPСоединение("http://oscript.io"); Запрос = Новый HTTPЗапрос(Ресурс); + Лог.Отладка("Сервер: %1. Ресурс: %2", Соединение.Сервер, Ресурс); + Ответ = Соединение.Получить(Запрос, ПутьКСохраняемомуФайлу); - + Лог.Отладка("Код состояния: %1", Ответ.КодСостояния); + + Лог.Информация("Скачивание завершено"); + Если Ответ.КодСостояния <> 200 Тогда + Лог.Ошибка( + "Ошибка скачивания установщика. Текст ответа: + |%1", + Ответ.ПолучитьТелоКакСтроку() + ); ВызватьИсключение Ответ.КодСостояния; КонецЕсли; + Лог.Отладка("Файл установщика скачан: %1", ПутьКСохраняемомуФайлу); + Возврат ПутьКСохраняемомуФайлу; КонецФункции Процедура УстановитьOneScriptИзZipАрхива(Знач ПутьКФайлуУстановщика, Знач КаталогУстановкиВерсии) + Лог.Информация("Распаковка OneScript..."); + ЧтениеZIPФайла = Новый ЧтениеZipФайла(ПутьКФайлуУстановщика); ЧтениеZIPФайла.ИзвлечьВсе(КаталогУстановкиВерсии); ЧтениеZIPФайла.Закрыть(); @@ -52,28 +75,49 @@ Возврат; КонецЕсли; + Лог.Информация("Создание sh-скрипта..."); + ПутьКСкрипту = ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript"); - + + Лог.Отладка("Путь с sh-скрипту: %1", ПутьКСкрипту); + Если ФС.ФайлСуществует(ПутьКСкрипту) Тогда + Лог.Отладка("sh-скрипт уже существует"); Возврат; КонецЕсли; ТекстСкрипта = "#!/bin/sh |dirpath=`dirname $0` - |mono $dirpath/oscript.exe ""$@"""; + |mono $dirpath / oscript.exe ""$@"""; + Лог.Отладка( + "Текст скрипта: + |%1", + ТекстСкрипта + ); + ЗаписьТекста = Новый ЗаписьТекста(ПутьКСкрипту, , , , Символы.ПС); ЗаписьТекста.Записать(ТекстСкрипта); ЗаписьТекста.Закрыть(); + Лог.Отладка("Установка флага выполнения..."); + Команда = Новый Команда; Команда.УстановитьКоманду("chmod"); Команда.ДобавитьПараметр("+x"); Команда.ДобавитьПараметр(ПутьКСкрипту); - Команда.Исполнить(); + КодСостояния = Команда.Исполнить(); + Лог.Отладка(Команда.ПолучитьВывод()); + + Если КодСостояния <> 0 Тогда + Лог.Ошибка("Ошибка установки флага выполнения для sh-скрипта"); + Лог.Ошибка(Команда.ПолучитьВывод()); + + ВызватьИсключение КодСостояния; + КонецЕсли; КонецПроцедуры @@ -106,3 +150,5 @@ СистемнаяИнформация = Новый СистемнаяИнформация; ЭтоWindows = Найти(ВРег(СистемнаяИнформация.ВерсияОС), "WINDOWS") > 0; + +Лог = ПараметрыOVM.ПолучитьЛог();