Skip to content

Commit

Permalink
Merge pull request #20 from sfaqer/feature/autumn-ovm
Browse files Browse the repository at this point in the history
ОСенний OVM
  • Loading branch information
nixel2007 authored Oct 1, 2023
2 parents 9a73cef + 0eaef6d commit 522353c
Show file tree
Hide file tree
Showing 22 changed files with 873 additions and 907 deletions.
8 changes: 5 additions & 3 deletions packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,13 @@
.ВерсияСреды("1.0.20")
.ЗависитОт("json")
.ЗависитОт("1commands", "1.3.2")
.ЗависитОт("fluent", "0.3.1")
.ЗависитОт("fluent", "0.6.1")
.ЗависитОт("fs")
.ЗависитОт("logos")
.ЗависитОт("tempfiles")
.ЗависитОт("cli", "0.9.8")
.ЗависитОт("strings")
.ЗависитОт("decorator", "1.5.2")
.ЗависитОт("autumn", "3.2.0")
.ЗависитОт("autumn-logos", "1.1.1")
.ЗависитОт("autumn-cli", "1.0.3")
.ИсполняемыйФайл("src/cmd/ovm.os", "ovm")
;
140 changes: 63 additions & 77 deletions src/cmd/ovm.os
Original file line number Diff line number Diff line change
@@ -1,81 +1,67 @@
#Использовать cli
#Использовать tempfiles
#Использовать autumn
#Использовать autumn-logos
#Использовать autumn-cli

#Использовать "."
#Использовать "../core"

///////////////////////////////////////////////////////////////////////////////

// Обработчик выполнения команды
//
// Параметры:
// КомандаПриложения - КомандаПриложения - Выполняемая команда
//
Процедура ВыполнитьКоманду(Знач КомандаПриложения) Экспорт

КомандаПриложения.ВывестиСправку();

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

Процедура ВыполнитьПриложение()

КонсольноеПриложение = Новый КонсольноеПриложение(
ПараметрыПриложения.ИмяПриложения(),
"OneScript Version Manager v" + ПараметрыПриложения.Версия()
);

КонсольноеПриложение.Версия("v version", ПараметрыПриложения.Версия());

КонсольноеПриложение.ДобавитьКоманду(
"install i",
"Установить OneScript указанных версий",
Новый КомандаInstall()
);
КонсольноеПриложение.ДобавитьКоманду(
"use u",
"Использовать OneScript указанной версии",
Новый КомандаUse()
);
КонсольноеПриложение.ДобавитьКоманду(
"uninstall delete d",
"Удалить OneScript указанных версий",
Новый КомандаUninstall()
);
КонсольноеПриложение.ДобавитьКоманду(
"list ls",
"Вывести список установленных и/или доступных версий OneScript",
Новый КомандаList()
);
КонсольноеПриложение.ДобавитьКоманду(
"run r",
"Запустить исполняемый файл в окружении указанной версии OneScript",
Новый КомандаRun()
);
КонсольноеПриложение.ДобавитьКоманду(
"which w",
"Вывести путь к установленной версии OneScript",
Новый КомандаWhich()
);
КонсольноеПриложение.ДобавитьКоманду(
"config",
"Настройки ovm. Прокси, сервера и т.п.",
Новый КомандаConfig()
);

КонсольноеПриложение.УстановитьОсновноеДействие(ЭтотОбъект);
КонсольноеПриложение.Запустить(АргументыКоманднойСтроки);

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

Лог = ПараметрыOVM.ПолучитьЛог();
КодСостояния = 0;
Попытка
ВыполнитьПриложение();
Исключение
Лог.Ошибка(ОписаниеОшибки());
КодСостояния = 1;
КонецПопытки;

ВременныеФайлы.Удалить();

ЗавершитьРаботу(КодСостояния);
Функция НастройкиЛогоса()

НастройкиЛога = Новый Соответствие;
НастройкиЛога.Вставить("level", "INFO");
НастройкиЛога.Вставить("appenders", "logos");
НастройкиЛога.Вставить("classlayout", "РаскладкаЛогOVM");

НастройкиУровнейЛогов = Новый Соответствие;
НастройкиУровнейЛогов.Вставить("oscript.app.ovm", НастройкиЛога);

НастройкаАппендера = Новый Соответствие;
НастройкаАппендера.Вставить("type", "АппендерЛогOVM");
НастройкаАппендера.Вставить("level", "INFO");

НастройкиАппендеров = Новый Соответствие;

НастройкиАппендеров.Вставить("logos", НастройкаАппендера);

Результат = Новый Соответствие;

Результат.Вставить("logos.logger", НастройкиУровнейЛогов);
Результат.Вставить("logos.appender", НастройкиАппендеров);

Возврат Результат;

КонецФункции

СоветДругогоМастера = Новый СоветДругогоМастера;
СоветДругогоМастера.ЗначенияДеталек(НастройкиЛогоса());

Поделка = Новый Поделка(СоветДругогоМастера);

УпакованВИсполняемыйФайл = СтрНайти(ТекущийСценарий().Источник, "oscript://") <> 0;

Если УпакованВИсполняемыйФайл Тогда
Поделка
.ДобавитьЗаготовку(Тип("ИнициализацияИнтефейсаКоманднойСтроки"))
.ДобавитьЗаготовку(Тип("ИнициализацияФабрикиЛогов"));
КонецЕсли;

Поделка
.ДобавитьАннотацию(Тип("АннотацияЛогOVM"))
.ДобавитьЖелудь(Тип("ФайлНастроек"))
.ДобавитьЖелудь(Тип("УстановщикOneScript"))
.ДобавитьЖелудь(Тип("РаскладкаЛогOVM"))
.ДобавитьЖелудь(Тип("ПараметрыOVM"))
.ДобавитьЖелудь(Тип("ПараметрыПриложения"))
.ДобавитьЖелудь(Тип("ДеинсталляторOneScript"))
.ДобавитьЖелудь(Тип("ВерсииOneScript"))
.ДобавитьЖелудь(Тип("АппендерЛогOVM"))
.ДобавитьЖелудь(Тип("АктиваторOneScript"))
.ДобавитьЖелудь(Тип("КомандаConfig"))
.ДобавитьЖелудь(Тип("КомандаInstall"))
.ДобавитьЖелудь(Тип("КомандаList"))
.ДобавитьЖелудь(Тип("КомандаRun"))
.ДобавитьЖелудь(Тип("КомандаUninstall"))
.ДобавитьЖелудь(Тип("КомандаUse"))
.ДобавитьЖелудь(Тип("КомандаWhich"));

Поделка.ЗапуститьПриложение();
42 changes: 16 additions & 26 deletions src/cmd/Классы/КомандаConfig.os
Original file line number Diff line number Diff line change
@@ -1,32 +1,22 @@
#Использовать "../../core"

Процедура ОписаниеКоманды(КомандаПриложения) Экспорт

КомандаПриложения.Аргумент(
"NAME",
,
"Название опции")
.ТСтрока();
&Аргумент(Имя = "NAME", Описание = "Название опции")
&ТСтрока
Перем Имя;

КомандаПриложения.Аргумент(
"VALUE",
,
"Значение опции (массив строк)")
.ТСтрока();

КонецПроцедуры
&Аргумент(Имя = "VALUE", Описание = "Значение опции (массив строк)")
&ТСтрока
Перем Значение;

// Обработчик выполнения команды
//
// Параметры:
// КомандаПриложения - КомандаПриложения - Выполняемая команда
//
Процедура ВыполнитьКоманду(Знач КомандаПриложения) Экспорт
Имя = КомандаПриложения.ЗначениеАргумента("NAME");
Значение = КомандаПриложения.ЗначениеАргумента("VALUE");
&Пластилин
Перем ФайлНастроек;

Хранилище = ПараметрыOVM.ХранилищеНастроек();
Хранилище.Установить(Имя, Значение);
Хранилище.Записать();
&КомандаПриложения(Имя = "config", Описание = "Настройки ovm. Прокси, сервера и т.п.")
Процедура ПриСозданииОбъекта()
КонецПроцедуры

КонецПроцедуры
&ВыполнениеКоманды
Процедура ВыполнениеКоманды() Экспорт
ФайлНастроек.Установить(Имя, Значение);
ФайлНастроек.Записать();
КонецПроцедуры
23 changes: 15 additions & 8 deletions src/cmd/Классы/КомандаInstall.os
Original file line number Diff line number Diff line change
@@ -1,7 +1,18 @@
#Использовать "../../core"

&ЛогOVM
Перем Лог;

&Пластилин
Перем УстановщикOneScript;

&Пластилин
Перем ПараметрыOVM;

&КомандаПриложения(Имя = "install i", Описание = "Установить OneScript указанных версий")
Процедура ПриСозданииОбъекта()
КонецПроцедуры

// Заполняет описание команды для библиотеки cli
//
// Параметры:
Expand Down Expand Up @@ -38,11 +49,11 @@
// КомандаПриложения - КомандаПриложения - Выполняемая команда
//
Процедура ВыполнитьКоманду(Знач КомандаПриложения) Экспорт

МассивВерсийКУстановке = КомандаПриложения.ЗначениеАргумента("VERSION");
АлиасВерсии = КомандаПриложения.ЗначениеОпции("name");
ОчищатьКаталогУстановки = КомандаПриложения.ЗначениеОпции("clean");

Если ЗначениеЗаполнено(АлиасВерсии) И МассивВерсийКУстановке.Количество() > 1 Тогда
ВызватьИсключение "Опция <--name> может быть задана только при установке одной версии OneScript";
КонецЕсли;
Expand All @@ -52,13 +63,11 @@
Иначе
ИспользоватьХ64 = Ложь;
КонецЕсли;

УстановщикOneScript = Новый УстановщикOneScript();


Для Каждого ВерсияКУстановке Из МассивВерсийКУстановке Цикл
УстановщикOneScript.УстановитьOneScript(ВерсияКУстановке, АлиасВерсии, ОчищатьКаталогУстановки, ИспользоватьХ64);
КонецЦикла;

Если МассивВерсийКУстановке.Количество() > 0 Тогда
Лог.Информация(
"Для начала использования версии OneScript, выполните команду:
Expand All @@ -68,5 +77,3 @@
КонецЕсли;

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

Лог = ПараметрыOVM.ПолучитьЛог();
76 changes: 37 additions & 39 deletions src/cmd/Классы/КомандаList.os
Original file line number Diff line number Diff line change
@@ -1,50 +1,50 @@
#Использовать "../../core"

&ЛогOVM
Перем Лог;

// Заполняет описание команды для библиотеки cli
//
// Параметры:
// КомандаПриложения - КомандаПриложения - Настраиваемая команда
//
Процедура ОписаниеКоманды(КомандаПриложения) Экспорт

КомандаПриложения
.Опция("remote r", Ложь, "Вывести список доступных к установке версий")
.ВОкружении("OVM_LIST_REMOTE");

КомандаПриложения
.Опция("quiet q", Ложь, "Тихий режим, вывод только алиасов версий")
.ВОкружении("OVM_LIST_QUIET");

КомандаПриложения
.Опция("all a", Ложь, "Вывести список всех версий: установленных и доступных на сайте")
.ВОкружении("OVM_LIST_ALL");
&Пластилин("АппендерЛогOVM")
Перем Аппендер;

&Пластилин
Перем ВерсииOneScript;

&Опция(Имя = "remote r", Описание = "Вывести список доступных к установке версий")
&ВОкружении("OVM_LIST_REMOTE")
&ТБулево
&ПоУмолчанию(Ложь)
Перем ВыводитьСписокВерсийНаСайте;

&Опция(Имя = "all a", Описание = "Вывести список всех версий: установленных и доступных на сайте")
&ВОкружении("OVM_LIST_ALL")
&ТБулево
&ПоУмолчанию(Ложь)
Перем ВыводитьВсеВерсии;

&Опция(Имя = "quiet q", Описание = "Тихий режим, вывод только алиасов версий")
&ВОкружении("OVM_LIST_QUIET")
&ТБулево
&ПоУмолчанию(Ложь)
Перем ТихийРежим;

&КомандаПриложения(Имя = "list ls", Описание = "Вывести список установленных и/или доступных версий OneScript")
Процедура ПриСозданииОбъекта()
КонецПроцедуры

// Обработчик выполнения команды
//
// Параметры:
// КомандаПриложения - КомандаПриложения - Выполняемая команда
//
Процедура ВыполнитьКоманду(Знач КомандаПриложения) Экспорт

ВыводитьСписокВерсийНаСайте = КомандаПриложения.ЗначениеОпции("remote");
ВыводитьВсеВерсии = КомандаПриложения.ЗначениеОпции("all");
ТихийРежим = КомандаПриложения.ЗначениеОпции("quiet");

&ВыполнениеКоманды
Процедура ВыполнениеКоманды() Экспорт

Если ВыводитьВсеВерсии Тогда
ВывестиВсеВерсии(ТихийРежим);
ВывестиВсеВерсии();
ИначеЕсли ВыводитьСписокВерсийНаСайте Тогда
ВывестиСписокДоступныхКУстановкеВерсий(ТихийРежим);
ВывестиСписокДоступныхКУстановкеВерсий();
Иначе
ВывестиСписокУстановленныхВерсий(ТихийРежим);
ВывестиСписокУстановленныхВерсий();
КонецЕсли;

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

Процедура ВывестиВсеВерсии(Знач ТихийРежим)
Процедура ВывестиВсеВерсии()

ВсеВерсии = ВерсииOneScript.ПолучитьСписокВсехВерсий();

Expand All @@ -71,15 +71,15 @@
СтатусСообщения.Информация,
СтатусСообщения.БезСтатуса
);
Аппендер = ПараметрыOVM.ПолучитьОсновнойСпособВывода();

Аппендер.УстановитьСвойство("message-status", УстанавливаемыйСтатусСообщения);
Лог.Информация(Сообщение);

КонецЦикла;

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

Процедура ВывестиСписокУстановленныхВерсий(Знач ТихийРежим)
Процедура ВывестиСписокУстановленныхВерсий()
СписокУстановленныхВерсий = ВерсииOneScript.ПолучитьСписокУстановленныхВерсий();
Для Каждого УстановленнаяВерсия Из СписокУстановленныхВерсий Цикл

Expand All @@ -103,14 +103,14 @@
СтатусСообщения.Информация,
СтатусСообщения.БезСтатуса
);
Аппендер = ПараметрыOVM.ПолучитьОсновнойСпособВывода();

Аппендер.УстановитьСвойство("message-status", УстанавливаемыйСтатусСообщения);
Лог.Информация(Сообщение);

КонецЦикла;
КонецПроцедуры

Процедура ВывестиСписокДоступныхКУстановкеВерсий(Знач ТихийРежим)
Процедура ВывестиСписокДоступныхКУстановкеВерсий()

СписокДоступныВерсий = ВерсииOneScript.ПолучитьСписокДоступныхКУстановкеВерсий();
Для Каждого ДоступнаяВерсия Из СписокДоступныВерсий Цикл
Expand All @@ -123,5 +123,3 @@
КонецЦикла;

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

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

0 comments on commit 522353c

Please sign in to comment.