Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

Данная библиотека для языка OScript, позволяет создавать консольные приложения с разбором и проверкой аргументов.

[Документация и описание публичного API](docs/README.md)
## Быстрый старт

### Пример простого приложения
Expand Down
833 changes: 833 additions & 0 deletions docs/readme.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
.Описание("Данный пакет облегчает создание консольных приложений на Oscript")
.ВерсияСреды("1.0.18")
.ВключитьФайл("src")
.ВключитьФайл("doc")
.ВключитьФайл("docs")
//.ВключитьФайл("tests")
.ВключитьФайл("package-loader.os")
.ВключитьФайл("packagedef")
Expand Down
822 changes: 464 additions & 358 deletions src/core/Классы/cmd/КомандаПриложения.os

Large diffs are not rendered by default.

427 changes: 301 additions & 126 deletions src/core/Классы/cmd/ПараметрКоманды.os

Large diffs are not rendered by default.

130 changes: 101 additions & 29 deletions src/core/Классы/КонсольноеПриложение.os
Original file line number Diff line number Diff line change
@@ -1,52 +1,52 @@
Перем Команда;
// Класс ПараметрКоманды, для доступа к установленному значению из вне
Перем ФлагВерсия Экспорт;
// Строковое представление версии приложения
Перем ВерсияПриложения Экспорт;

Перем Команда;
Перем НаименованиеПриложения;
Перем ОписаниеПриложения;

Перем ДействиеВыполнения Экспорт;
Перем ДействиеПередВыполнением Экспорт;
Перем ДействиеПослеВыполнения Экспорт;

Перем ФлагВерсия Экспорт;

Перем ТипОпцииКоманды;

Процедура ПриСозданииОбъекта(Знач Наименование, Знач Описание, Знач КлассРеализацииОсновныйКоманды = Неопределено)

НаименованиеПриложения = Наименование;
ОписаниеПриложения = Описание;

Если КлассРеализацииОсновныйКоманды = Неопределено Тогда
КлассРеализацииОсновныйКоманды = ЭтотОбъект;
КонецЕсли;

Команда = Новый КомандаПриложения(Наименование, Описание, КлассРеализацииОсновныйКоманды, ЭтотОбъект);

ТипОпцииКоманды = Новый Структура;
ТипОпцииКоманды.Вставить("Опция", "Опция");
ТипОпцииКоманды.Вставить("Аргумент", "Аргумент");

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

// Процедура добавляет версию приложения,
// при вызове данной опции, показывается установленная версия и
// завершается выполнение с кодом (0)
//
// Параметры:
// Наименование - строка - имя опции, в строке допустимо задавать синоним через пробел, например "v version"
// СтрокаВерсии - строка - версия, приложения
Процедура Версия(Наименование, СтрокаВерсии) Экспорт

ВерсияПриложения = СтрокаВерсии;
ФлагВерсия = Команда.Опция(Наименование, Ложь, "показать версию и выйти");

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

// Процедура позволяет переопределить стандартную строку использования приложения
//
// Параметры:
// СтрокаСпек - строка - переопределенная строка использования приложения
Процедура УстановитьСпек(Знач СтрокаСпек) Экспорт

Команда.Спек = СтрокаСпек;

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

// Возвращает основную команду приложения
//
// Возвращаемое значение:
// Команда - класс КомандаПриложения
Функция ПолучитьКоманду() Экспорт

Возврат Команда;

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

// Основная процедура запуска приложения
//
// Параметры:
// АргументыКоманднойСтрокиВходящие - Массив - Элементы <Строка>, необзательный,
// Если, не передано считывает из АргументыКоманднойСтроки
Процедура Запустить(АргументыКоманднойСтрокиВходящие = Неопределено) Экспорт

Аргументы = АргументыКоманднойСтроки;
Expand All @@ -60,36 +60,101 @@

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

// Функция добавляет команду приложение и возвращает экземпляр данной команды
//
// Параметры:
// ИмяКоманды - строка - в строке допустимо задавать синоним через пробел, например "exec e"
// ОписаниеКоманды - строка - описание команды для справки
// КлассРеализацииКоманды - объект - класс, объект реализующий функции выполнения команды.
// Так же используется, для автоматической настройки опций и параметров команды
//
// Возвращаемое значение:
// Команда - класс КомандаПриложения
Функция ДобавитьКоманду(ИмяКоманды, ОписаниеКоманды, КлассРеализацииКоманды) Экспорт

Возврат Команда.ДобавитьПодкоманду(ИмяКоманды, ОписаниеКоманды, КлассРеализацииКоманды);

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

// Процедура устанавливает процедуру "ВыполнитьКоманду" выполнения для приложения
//
// Параметры:
// КлассРеализации - объект - класс, объект реализующий процедуру выполнения команды.
// ИмяПроцедуры - строка - имя процедуры, отличное от стандартного "ВыполнитьКоманду"
//
Процедура УстановитьОсновноеДействие(КлассРеализации, ИмяПроцедуры = "ВыполнитьКоманду") Экспорт

Команда.УстановитьДействиеВыполнения(КлассРеализации, ИмяПроцедуры);

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

// Процедура устанавливает процедуру "ПередВыполнениемКоманды" выполнения для приложения
// запускаемую перед выполнением "ВыполнитьКоманду"
//
// Параметры:
// КлассРеализации - объект - класс, объект реализующий процедуру выполнения команды.
// ИмяПроцедуры - строка - имя процедуры, отличное от стандартного "ПередВыполнениемКоманды"
//
Процедура УстановитьДействиеПередВыполнением(КлассРеализации, ИмяПроцедуры = "ПередВыполнениемКоманды") Экспорт

Команда.УстановитьДействиеПередВыполнением(КлассРеализации, ИмяПроцедуры);

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

// Процедура устанавливает процедуру "ПослеВыполненияКоманды" выполнения для приложения
// запускаемую после выполнением "ВыполнитьКоманду"
//
// Параметры:
// КлассРеализации - объект - класс, объект реализующий процедуру выполнения команды.
// ИмяПроцедуры - строка - имя процедуры, отличное от стандартного "ПослеВыполненияКоманды"
//
Процедура УстановитьДействиеПослеВыполнения(КлассРеализации, ИмяПроцедуры = "ПослеВыполненияКоманды") Экспорт

Команда.УстановитьДействиеПослеВыполнения(КлассРеализации, ИмяПроцедуры);

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

// Функция добавляет опцию приложения и возвращает экземпляр данной опции
//
// Параметры:
// Имя - строка - имя опции, в строке допустимо задавать синоним через пробел, например "s some-opt"
// Значение - строка - значение опции по умолчанию
// Описание - объект - описание опции для справки.
//
// Возвращаемое значение:
// Команда - класс ПараметрКоманды
//
// Дополнительно смотри справку по классу ПараметрКоманды
Функция Опция(Имя, Значение = "", Описание = "") Экспорт

Возврат Команда.Опция(Имя, Значение, Описание);

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

// Функция добавляет аргумент приложения и возвращает экземпляр данной аргумента
//
// Параметры:
// Имя - строка - имя аргумента, в строке допустимо использование только из БОЛЬШИХ латинских букв, например "ARG"
// Значение - строка - значение аргумента по умолчанию
// Описание - объект - описание аргумента для справки.
//
// Возвращаемое значение:
// Команда - класс ПараметрКоманды
//
// Дополнительно смотри справку по классу ПараметрКоманды
Функция Аргумент(Имя, Значение = "", Описание = "") Экспорт

Возврат Команда.Аргумент(Имя, Значение, Описание);

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

// Предопределенная процедура выполнения приложения, если не задана процедура в классе.
// Выводит справку, по работе с приложением и завершает работу с кодом "1"
// Переопределяется, процедурой "УстановитьОсновноеДействие"
//
// Параметры:
// Команда - класс КомандаПриложения - инстанс класс, для доступа к опция и аргументам выполняемой команды
//
Процедура ВыполнитьКоманду(Знач Команда) Экспорт

Сообщить("Не корректное использование"+ Символы.ПС);
Expand All @@ -98,8 +163,15 @@

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

Функция Аргумент(Имя, Значение = "", Описание = "") Экспорт

Возврат Команда.Аргумент(Имя, Значение, Описание);
Процедура ПриСозданииОбъекта(Знач Наименование, Знач Описание, Знач КлассРеализацииОсновныйКоманды = Неопределено)

КонецФункции
НаименованиеПриложения = Наименование;
ОписаниеПриложения = Описание;

Если КлассРеализацииОсновныйКоманды = Неопределено Тогда
КлассРеализацииОсновныйКоманды = ЭтотОбъект;
КонецЕсли;

Команда = Новый КомандаПриложения(Наименование, Описание, КлассРеализацииОсновныйКоманды, ЭтотОбъект);

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