Skip to content
This repository has been archived by the owner on May 25, 2021. It is now read-only.

Commit

Permalink
#3 Логирование процесса установки
Browse files Browse the repository at this point in the history
  • Loading branch information
nixel2007 committed Jan 30, 2018
1 parent 1e71c18 commit 75befef
Showing 1 changed file with 52 additions and 6 deletions.
58 changes: 52 additions & 6 deletions src/core/Классы/УстановщикOneScript.os
Original file line number Diff line number Diff line change
Expand Up @@ -3,43 +3,66 @@
#Использовать tempfiles

Перем ЭтоWindows;
Перем Лог;

Процедура УстановитьOneScript(Знач ВерсияКУстановке) Экспорт

Лог.Информация("Установка OneScript %1...", ВерсияКУстановке);

ПроверитьКорректностьПереданнойВерсии(ВерсияКУстановке);

КаталогУстановки = ПараметрыOVM.КаталогУстановкиПоУмолчанию();
КаталогУстановкиВерсии = ОбъединитьПути(КаталогУстановки, ВерсияКУстановке);
ФС.ОбеспечитьКаталог(КаталогУстановки);
ФС.ОбеспечитьПустойКаталог(КаталогУстановкиВерсии);

Лог.Отладка("Каталог установки версии: %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Файла.Закрыть();
Expand All @@ -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-скрипта");
Лог.Ошибка(Команда.ПолучитьВывод());

ВызватьИсключение КодСостояния;
КонецЕсли;

КонецПроцедуры

Expand Down Expand Up @@ -106,3 +150,5 @@

СистемнаяИнформация = Новый СистемнаяИнформация;
ЭтоWindows = Найти(ВРег(СистемнаяИнформация.ВерсияОС), "WINDOWS") > 0;

Лог = ПараметрыOVM.ПолучитьЛог();

0 comments on commit 75befef

Please sign in to comment.