-
Notifications
You must be signed in to change notification settings - Fork 31
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
36 changed files
with
898 additions
and
449 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,2 @@ | ||
oscript_modules/ | ||
test-reports/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,60 +1,73 @@ | ||
///////////////////////////////////////////////////////////////////////// | ||
/////////////////////////////////////////////////////////////////////////// | ||
// | ||
// OneScript Package Manager | ||
// Установщик пакетов для OneScript | ||
// Выполняется, как os-приложение в командной строке: | ||
// | ||
// opm install my-package.ospx | ||
// | ||
///////////////////////////////////////////////////////////////////////// | ||
//////////////////////////////////////////////////////////////////////// | ||
// | ||
// CLI-интерфейс для oscript-app | ||
// | ||
/////////////////////////////////////////////////////////////////////// | ||
|
||
#Использовать cmdline | ||
#Использовать logos | ||
|
||
#Использовать "." | ||
|
||
Перем Лог; | ||
|
||
Процедура ВыполнитьКоманду(Знач Аргументы) | ||
|
||
ОбработкаКоманд = СоздатьОбработчикКоманд(); | ||
Парсер = Новый ПарсерАргументовКоманднойСтроки(); | ||
|
||
ОбработкаКоманд.ДобавитьОписанияКоманд(Парсер); | ||
|
||
ПараметрыКоманды = Парсер.РазобратьКоманду(Аргументы); | ||
Если ПараметрыКоманды = Неопределено Тогда | ||
ВывестиСправкуПоКомандам(ОбработкаКоманд); | ||
ЗавершитьРаботу(1); | ||
КонецЕсли; | ||
|
||
Попытка | ||
ОбработкаКоманд.ВыполнитьКоманду(ПараметрыКоманды); | ||
Исключение | ||
Лог.Отладка(ОписаниеОшибки()); | ||
Лог.Информация(КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); | ||
ЗавершитьРаботу(1); | ||
КонецПопытки; | ||
|
||
КонецПроцедуры | ||
///////////////////////////////////////////////////////////////////////////////////////// | ||
|
||
Процедура ВывестиСправкуПоКомандам(Знач ОбработкаКоманд) | ||
|
||
ОбработкаКоманд.ВывестиСправкуПоКомандам(); | ||
Функция ПолучитьПарсерКоманднойСтроки() | ||
|
||
Парсер = Новый ПарсерАргументовКоманднойСтроки(); | ||
|
||
МенеджерКомандПриложенияOpm.ЗарегистрироватьКоманды(Парсер); | ||
|
||
Возврат Парсер; | ||
|
||
КонецФункции | ||
|
||
Функция ПолезнаяРабота() | ||
ПараметрыЗапуска = РазобратьАргументыКоманднойСтроки(); | ||
Если ПараметрыЗапуска = Неопределено или ПараметрыЗапуска.Количество() = 0 Тогда | ||
Лог.Ошибка("Некорректные аргументы командной строки"); | ||
МенеджерКомандПриложенияOpm.ПоказатьСправкуПоКомандам(); | ||
Возврат 1; | ||
КонецЕсли; | ||
|
||
КонецПроцедуры | ||
НастройкиПриложенияOpm.УстановитьФайлНастроек(ОбъединитьПути(СтартовыйСценарий().Каталог, "opm.cfg")); | ||
|
||
///////////////////////////////////////////////////////////////////////// | ||
// Вспомогательные функции | ||
Если ТипЗнч(ПараметрыЗапуска) = Тип("Структура") Тогда | ||
// это команда | ||
Команда = ПараметрыЗапуска.Команда; | ||
ЗначенияПараметров = ПараметрыЗапуска.ЗначенияПараметров; | ||
ИначеЕсли ЗначениеЗаполнено(ПараметрыСистемыOpm.ИмяКомандыПоУмолчанию()) Тогда | ||
// это команда по-умолчанию | ||
Команда = ПараметрыСистемыOpm.ИмяКомандыПоУмолчанию(); | ||
ЗначенияПараметров = ПараметрыЗапуска; | ||
Иначе | ||
ВызватьИсключение "Некорректно настроено имя команды по-умолчанию."; | ||
КонецЕсли; | ||
|
||
Возврат МенеджерКомандПриложенияOpm.ВыполнитьКоманду(Команда, ЗначенияПараметров); | ||
|
||
КонецФункции | ||
|
||
Функция СоздатьОбработчикКоманд() | ||
Возврат Новый ДиспетчерКомандПриложения(); | ||
Функция РазобратьАргументыКоманднойСтроки() | ||
Парсер = ПолучитьПарсерКоманднойСтроки(); | ||
Возврат Парсер.Разобрать(АргументыКоманднойСтроки); | ||
КонецФункции | ||
|
||
///////////////////////////////////////////////////////////////////////// | ||
// Точка входа | ||
|
||
Лог = Логирование.ПолучитьЛог(Константы.ИмяЛога); | ||
Лог = Логирование.ПолучитьЛог(ПараметрыСистемыOpm.ИмяЛогаСистемы()); | ||
МенеджерКомандПриложенияOpm.РегистраторКоманд(ПараметрыСистемыOpm); | ||
|
||
НастройкиПриложения.УстановитьФайлНастроек(ОбъединитьПути(СтартовыйСценарий().Каталог, "opm.cfg")); | ||
ВыполнитьКоманду(АргументыКоманднойСтроки); | ||
Попытка | ||
ЗавершитьРаботу(ПолезнаяРабота()); | ||
Исключение | ||
Лог.КритичнаяОшибка(ОписаниеОшибки()); | ||
ЗавершитьРаботу(255); | ||
КонецПопытки; |
Oops, something went wrong.