Skip to content

Commit

Permalink
Черновик библиотеки autumn-cli и ее использование
Browse files Browse the repository at this point in the history
  • Loading branch information
nixel2007 committed Feb 9, 2023
1 parent 29c2809 commit 41b8957
Show file tree
Hide file tree
Showing 16 changed files with 189 additions and 99 deletions.
23 changes: 23 additions & 0 deletions autumn-properties.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"cli": {
"ИмяПриложения": "ovm",
"ПолноеИмяПриложения": "OneScript Version Manager v%{cli.ВерсияПриложения}",
"ВерсияПриложения": "1.0.0-RC17"
},
"logos": {
"logger": {
"oscript.app.ovm": {
"level": "info",
"appenders": [
"logos"
]
}
},
"appender": {
"logos": {
"type": "ЛогосАппендер",
"level": "info"
}
}
}
}
2 changes: 2 additions & 0 deletions packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
.АдресАвтора("[email protected]")
.Описание("OneScript Version Manager")
.ВерсияСреды("1.0.20")
.ЗависитОт("autumn", "2.3.0")
.ЗависитОт("autumn-logos", "1.0.0")
.ЗависитОт("json")
.ЗависитОт("1commands", "1.3.2")
.ЗависитОт("fluent", "0.3.1")
Expand Down
83 changes: 6 additions & 77 deletions src/cmd/ovm.os
Original file line number Diff line number Diff line change
@@ -1,81 +1,10 @@
#Использовать cli
#Использовать tempfiles
#Использовать autumn
#Использовать autumn-logos

#Использовать "."
#Использовать "../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;
КонецПопытки;

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

ЗавершитьРаботу(КодСостояния);
Поделка = Новый Поделка();
Поделка
.ПросканироватьКаталог(ТекущийСценарий().Каталог)
.ЗапуститьПриложение();
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
&Аннотация("КомандаПриложения")
&Прозвище("КомандаПриложения")
&Желудь
Процедура ПриСозданииОбъекта(Имя, Описание = "")
КонецПроцедуры
4 changes: 4 additions & 0 deletions src/cmd/Классы/АннотацияЛогOVM.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
&Аннотация("ЛогOVM")
&Лог("oscript.app.ovm")
Процедура ПриСозданииОбъекта()
КонецПроцедуры
51 changes: 51 additions & 0 deletions src/cmd/Классы/ДубCli.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
#Использовать autumn
#Использовать cli

&Завязь
Функция КонсольноеПриложение(
&Пластилин(Значение = "КомандаПриложения", Тип = "ТаблицаЗначений") КомандыПриложения,
&Пластилин КомандаПриложенияПоУмолчанию,
&Деталька(Значение = "cli.ИмяПриложения") ИмяПриложения,
&Деталька(Значение = "cli.ПолноеИмяПриложения") ПолноеИмяПриложения,
&Деталька(Значение = "cli.ВерсияПриложения") ВерсияПриложения
) Экспорт

// TODO: Перенести в ядро ОСени.
ПолноеИмяПриложения = СтрЗаменить(ПолноеИмяПриложения, "%{cli.ВерсияПриложения}", ВерсияПриложения);

КонсольноеПриложение = Новый КонсольноеПриложение(
ИмяПриложения,
ПолноеИмяПриложения
);

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

Для Каждого ДанныеЖелудя Из КомандыПриложения Цикл

КомандаПриложения = ДанныеЖелудя.Желудь;
ОпределениеЖелудя = ДанныеЖелудя.ОпределениеЖелудя;

Конструктор = ОпределениеЖелудя.Завязь().ДанныеМетода();

Аннотация = РаботаСАннотациями.НайтиАннотацию(Конструктор.Аннотации, "КомандаПриложения");
Если Аннотация = Неопределено Тогда
ВызватьИсключение "Не найдена аннотация КомандаПриложения у желудя " + ДанныеЖелудя.Имя;
КонецЕсли;

КонсольноеПриложение.ДобавитьКоманду(
РаботаСАннотациями.ПолучитьЗначениеПараметраАннотации(Аннотация, "Имя"),
РаботаСАннотациями.ПолучитьЗначениеПараметраАннотации(Аннотация, "Описание", ""),
КомандаПриложения
);

КонецЦикла;

КонсольноеПриложение.УстановитьОсновноеДействие(КомандаПриложенияПоУмолчанию);

Возврат КонсольноеПриложение;

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

&Дуб
Процедура ПриСозданииОбъекта()
КонецПроцедуры
7 changes: 7 additions & 0 deletions src/cmd/Классы/КомандаConfig.os
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,11 @@
Хранилище.Установить(Имя, Значение);
Хранилище.Записать();

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

&КомандаПриложения(
Имя = "config",
Описание = "Настройки ovm. Прокси, сервера и т.п."
)
Процедура ПриСозданииОбъекта()
КонецПроцедуры
8 changes: 7 additions & 1 deletion src/cmd/Классы/КомандаInstall.os
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#Использовать "../../core"

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

// Заполняет описание команды для библиотеки cli
Expand Down Expand Up @@ -69,4 +70,9 @@

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

Лог = ПараметрыOVM.ПолучитьЛог();
&КомандаПриложения(
Имя = "install i",
Описание = "Установить OneScript указанных версий"
)
Процедура ПриСозданииОбъекта()
КонецПроцедуры
8 changes: 7 additions & 1 deletion src/cmd/Классы/КомандаList.os
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#Использовать "../../core"

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

// Заполняет описание команды для библиотеки cli
Expand Down Expand Up @@ -124,4 +125,9 @@

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

Лог = ПараметрыOVM.ПолучитьЛог();
&КомандаПриложения(
Имя = "list ls",
Описание = "Вывести список установленных и/или доступных версий OneScript"
)
Процедура ПриСозданииОбъекта()
КонецПроцедуры
7 changes: 7 additions & 0 deletions src/cmd/Классы/КомандаRun.os
Original file line number Diff line number Diff line change
Expand Up @@ -64,5 +64,12 @@

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

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

СистемнаяИнформация = Новый СистемнаяИнформация;
ЭтоWindows = Найти(ВРег(СистемнаяИнформация.ВерсияОС), "WINDOWS") > 0;
8 changes: 7 additions & 1 deletion src/cmd/Классы/КомандаUninstall.os
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
&ЛогOVM
Перем Лог;

// Заполняет описание команды для библиотеки cli
Expand Down Expand Up @@ -57,4 +58,9 @@

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

Лог = ПараметрыOVM.ПолучитьЛог();
&КомандаПриложения(
Имя = "uninstall delete d",
Описание = "Удалить OneScript указанных версий"
)
Процедура ПриСозданииОбъекта()
КонецПроцедуры
7 changes: 7 additions & 0 deletions src/cmd/Классы/КомандаUse.os
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,10 @@
АктиваторOneScript.ИспользоватьВерсиюOneScript(ИспользуемаяВерсия, ВыполнятьУстановкуПриНеобходимости);

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

&КомандаПриложения(
Имя = "use u",
Описание = "Использовать OneScript указанной версии"
)
Процедура ПриСозданииОбъекта()
КонецПроцедуры
8 changes: 7 additions & 1 deletion src/cmd/Классы/КомандаWhich.os
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#Использовать "../../core"

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

// Заполняет описание команды для библиотеки cli
Expand Down Expand Up @@ -35,4 +36,9 @@

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

Лог = ПараметрыOVM.ПолучитьЛог();
&КомандаПриложения(
Имя = "which w",
Описание = "Вывести путь к установленной версии OneScript"
)
Процедура ПриСозданииОбъекта()
КонецПроцедуры
19 changes: 19 additions & 0 deletions src/cmd/Классы/КомандаПоУмолчанию.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
// Обработчик выполнения команды
//
// Параметры:
// КомандаПриложения - КомандаПриложения - Выполняемая команда
//
Процедура ВыполнитьКоманду(Знач КомандаПриложения) Экспорт

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

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

&КомандаПриложения(
Имя = "help h",
Описание = "Вывести справку по командам"
)
&Прозвище("КомандаПриложенияПоУмолчанию")
Процедура ПриСозданииОбъекта()

КонецПроцедуры
30 changes: 30 additions & 0 deletions src/cmd/Классы/РогаткаCli.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
// TODO: отдельная рогатка ovm по управлчению временными файлами? Перехватчик "ПриЗавершенииПриложения" в ОСени?
#Использовать tempfiles

&Пластилин
Перем КонсольноеПриложение;

&Лог("oscript.lib.autumn-cli")
Перем Лог;

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

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

ВременныеФайлы.Удалить(); // todo: перехватчик "ПриЗавершенииПриложения" в ОСени?

КодСостояния = 1; // todo: возврат кода состояния рогатки как ExitCodeGenerator?
КонецПопытки;

ЗавершитьРаботу(КодСостояния); // todo: прям не хорошо

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

&Рогатка(ЗапускатьВФоне = Ложь)
Процедура ПриСозданииОбъекта()
КонецПроцедуры
18 changes: 0 additions & 18 deletions src/cmd/Модули/ПараметрыПриложения.os

This file was deleted.

0 comments on commit 41b8957

Please sign in to comment.