Skip to content

Commit

Permalink
Finish 0.9.2
Browse files Browse the repository at this point in the history
  • Loading branch information
khorevaa committed Dec 27, 2017
2 parents 4f3dd54 + c762d17 commit 8159db0
Show file tree
Hide file tree
Showing 16 changed files with 179 additions and 195 deletions.
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ before_install:
- sudo oscript /usr/share/oscript/lib/opm/src/opm.os install opm

install:
- sudo oscript /usr/share/oscript/lib/opm/src/opm.os install 1testrunner
- sudo oscript /usr/share/oscript/lib/opm/src/opm.os install 1testrunner@1.5.0
- sudo oscript /usr/share/oscript/lib/opm/src/opm.os install 1bdd
- sudo oscript /usr/share/oscript/lib/opm/src/opm.os install

Expand Down
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
# cli

[![Stars](https://img.shields.io/github/stars/khorevaa/cli.svg?label=Github%20%E2%98%85&a)](https://github.com/khorevaa/cli/stargazers)
[![Release](https://img.shields.io/github/tag/khorevaa/cli.svg?label=Last%20release&a)](https://github.com/khorevaa/cli/releases)
[![Открытый чат проекта https://gitter.im//oscript-cli/Lobby](https://badges.gitter.im/khorevaa/cli.png)](https://gitter.im/oscript-cli/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)

[![Build Status](https://travis-ci.org/khorevaa/cli.svg?branch=master)](https://travis-ci.org/khorevaa/cli)
[![Coverage Status](https://coveralls.io/repos/github/khorevaa/cli/badge.svg?branch=master)](https://coveralls.io/github/khorevaa/cli?branch=master)


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

## Быстрый старт
Expand Down
58 changes: 1 addition & 57 deletions packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -3,64 +3,8 @@
// Полную документацию см. на hub.oscript.io/packaging
//

///////////////////////////////////////////////////////////////////
// Процедуры установки пакета с клиентской машины
///////////////////////////////////////////////////////////////////


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


///////////////////////////////////////////////////////////////////
// Процедуры сборки пакета
///////////////////////////////////////////////////////////////////


// Вызывается пакетным менеджером перед началом сборки пакета.
//
// Параметры:
// РабочийКаталог - Строка - Текущий рабочий каталог с исходниками пакета.
//
Процедура ПередСборкой(Знач РабочийКаталог) Экспорт
// TODO: Реализуйте спец. логику сборки, если требуется
КонецПроцедуры


// Вызывается пакетным менеджером после помещения файлов в пакет.
//
// Параметры:
// РабочийКаталог - Строка - Текущий рабочий каталог с исходниками пакета.
// АрхивПакета - ЗаписьZIPФайла - ZIP-архив с содержимым пакета (включаемые файлы).
//
Процедура ПриСборке(Знач РабочийКаталог, Знач АрхивПакета) Экспорт
// TODO: Реализуйте спец. логику сборки, если требуется
// АрхивПакета.Добавить(ПолныйПутьНужногоФайла,
// РежимСохраненияПутейZIP.СохранятьОтносительныеПути,
// РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);
КонецПроцедуры


// Вызывается пакетным менеджером после сборки пакета.
//
// Параметры:
// РабочийКаталог - Строка - Текущий рабочий каталог с исходниками пакета.
// ПутьКФайлуПакета - Строка - Полный путь к собранному файлу пакета.
//
Процедура ПослеСборки(Знач РабочийКаталог, Знач ПутьКФайлуПакета) Экспорт
// TODO: Реализуйте спец. логику сборки, если требуется
КонецПроцедуры



Описание.Имя("cli")
.Версия("0.9.1")
.Версия("0.9.2")
.Автор("Khorev Aleksey")
.АдресАвтора("[email protected]")
.Описание("Данный пакет облегчает создание консольных приложений на Oscript")
Expand Down
88 changes: 69 additions & 19 deletions src/core/Классы/cmd/КомандаПриложения.os
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,12 @@

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

Функция ПолучитьПодкоманды() Экспорт

Возврат ВложенныеКоманды;

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

Функция ПолучитьИмяКоманды() Экспорт
Возврат Имя;
КонецФункции
Expand All @@ -99,15 +105,32 @@

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

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

ПКоманды = Новый Соответствие;

Для каждого КлючЗначение Из ОпцииИндекс Цикл
ПКоманды.Вставить(КлючЗначение.Ключ, КлючЗначение.Значение.Значение);
КонецЦикла;

Для каждого КлючЗначение Из АргументыИндекс Цикл
ПКоманды.Вставить(КлючЗначение.Ключ, КлючЗначение.Значение.Значение);
КонецЦикла;

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

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


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

Если Команда.Приложение = Неопределено Тогда
Возврат;
КонецЕсли;

Лог.Отладка("Выполнение метода <ПередВыполнениемКоманды>");
Лог.Отладка("Необходимо вывести версию <%1>", Команда.Приложение.ФлагВерсия.Значение);
Если Команда.Приложение.ФлагВерсия.Значение Тогда
Если НЕ Команда.Приложение.ФлагВерсия = Неопределено
И Команда.Приложение.ФлагВерсия.Значение Тогда

ВывестиВерсию();
ЗавершитьРаботу(0);
Expand Down Expand Up @@ -158,15 +181,13 @@
Возврат;
КонецЕсли;

ДействиеПередВыполнением.Исполнить(ЭтотОбъект);

Если КонечныйИндексКоманды = АргументыCLI.ВГраница() Тогда

ДействиеПередВыполнением.Исполнить(ЭтотОбъект);


Лог.Отладка("Выполняю полезную работу %1", Имя);
ДействиеВыполнения.Исполнить(ЭтотОбъект);

ДействиеПослеВыполнения.Исполнить(ЭтотОбъект);

Возврат;
КонецЕсли;

Expand All @@ -190,13 +211,19 @@

ВложеннаяКоманда.НачалоЗапуска();
ВложеннаяКоманда.Запуск(АргументыПодкоманды);

ДействиеПослеВыполнения.Исполнить(ЭтотОбъект);

Возврат;

КонецЕсли;

КонецЦикла;

ДействиеПослеВыполнения.Исполнить(ЭтотОбъект);



Если СтрНачинаетсяС(ПервыйАргумент,"-") Тогда
ВывестиСправку();
ВызватьИсключение "Не известна опция";
Expand Down Expand Up @@ -325,9 +352,20 @@
КонсольВывода.ЦветТекста = ЦветТекстаКонсоли;
КонсольВывода.ВывестиСтроку(СтрШаблон("%2Доступные команды:%1%2", Символы.Таб, Символы.ВК));

МаксимальнаяДлинаКоманд = 0;

Для каждого ВложеннаяКоманда Из ВложенныеКоманды Цикл
НоваяДлина = СтрДлина(СтрСоединить(ВложеннаяКоманда.ПолучитьСинонимы(),", "));
МаксимальнаяДлинаКоманд = ?(НоваяДлина > МаксимальнаяДлинаКоманд, НоваяДлина,МаксимальнаяДлинаКоманд);
КонецЦикла;


Для каждого ВложеннаяКоманда Из ВложенныеКоманды Цикл

КонсольВывода.ВывестиСтроку(СтрШаблон(" %3%1%4%2", Символы.Таб, Символы.ВК, СтрСоединить(ВложеннаяКоманда.ПолучитьСинонимы(),", "), ВложеннаяКоманда.ПолучитьОписание()));
ПредставлениеВлКоманды = СтрСоединить(ВложеннаяКоманда.ПолучитьСинонимы(),", ");
ТекущаяДлина = СтрДлина(ПредставлениеВлКоманды);

КонсольВывода.ВывестиСтроку(СтрШаблон(" %3%1%4%2", Символы.Таб, Символы.ВК, ДополнитьСтрокуПробелами(ПредставлениеВлКоманды, МаксимальнаяДлинаКоманд - ТекущаяДлина) , ВложеннаяКоманда.ПолучитьОписание()));

КонецЦикла;

Expand Down Expand Up @@ -357,16 +395,22 @@
ИмяОпции = АргументСправки.Имя;;
ПеременныеОкружения = ФорматироватьПеременнуюОкруженияОпцииДляСправки(АргументСправки);
ЗначениеОпции = ФорматироватьЗначениеОпцииДляСправки(АргументСправки);
ОписаниеОпции = АргументСправки.Описание + ПеременныеОкружения + ЗначениеОпции;
ОписаниеОпции = АргументСправки.Описание + " " + ПеременныеОкружения + " " + ЗначениеОпции;

НоваяЗапись.Наименование = ИмяОпции;
НоваяЗапись.Описание = ОписаниеОпции;
НоваяЗапись.ДлинаНаименования = СтрДлина(ИмяОпции);
НоваяЗапись.ДлинаНаименования = СтрДлина(ИмяОпции)+1;

КонецЦикла;

Таблица.Сортировать("ДлинаНаименования УБЫВ");
МаксимальнаяДлина = Таблица[0].ДлинаНаименования;
Если Таблица.Количество() = 0 Тогда
Возврат Таблица;
КонецЕсли;

ТаблицаДляСортировки = Таблица.Скопировать(,"ДлинаНаименования");
ТаблицаДляСортировки.Сортировать("ДлинаНаименования УБЫВ");

МаксимальнаяДлина = ТаблицаДляСортировки[0].ДлинаНаименования;

Для каждого СтрокаТаблицы Из Таблица Цикл

Expand Down Expand Up @@ -402,16 +446,21 @@
ИмяОпции = ФорматироватьИмяОпцииДляСправки(ОпцияСправки);
ПеременныеОкружения = ФорматироватьПеременнуюОкруженияОпцииДляСправки(ОпцияСправки);
ЗначениеОпции = ФорматироватьЗначениеОпцииДляСправки(ОпцияСправки);
ОписаниеОпции = ОпцияСправки.Описание + ПеременныеОкружения + ЗначениеОпции;
ОписаниеОпции = ОпцияСправки.Описание + " " + ПеременныеОкружения + " " + ЗначениеОпции;

НоваяЗапись.Наименование = ИмяОпции;
НоваяЗапись.Описание = ОписаниеОпции;
НоваяЗапись.ДлинаНаименования = СтрДлина(ИмяОпции);
НоваяЗапись.ДлинаНаименования = СтрДлина(ИмяОпции)+1;

КонецЦикла;

Таблица.Сортировать("ДлинаНаименования УБЫВ");
МаксимальнаяДлина = Таблица[0].ДлинаНаименования;
Если Таблица.Количество() = 0 Тогда
Возврат Таблица;
КонецЕсли;

ТаблицаДляСортировки = Таблица.Скопировать(,"ДлинаНаименования");
ТаблицаДляСортировки.Сортировать("ДлинаНаименования УБЫВ");
МаксимальнаяДлина = ТаблицаДляСортировки[0].ДлинаНаименования;

Для каждого СтрокаТаблицы Из Таблица Цикл

Expand Down Expand Up @@ -499,7 +548,7 @@
СтрокаРазделитель = ", ";
КонецЕсли;

Результат = СтрШаблон("%1$%2",СтрокаРазделитель, МассивПО[ИИ]);
Результат = Результат + СтрШаблон("%1$%2",СтрокаРазделитель, МассивПО[ИИ]);

КонецЦикла;

Expand All @@ -514,11 +563,12 @@
Процедура НачалоЗапуска() Экспорт

КомандыРодителиДляПодчиненной = Новый Массив;
КомандыРодителиДляПодчиненной.Добавить(Имя);


Для каждого КомандаРодитель Из КомандыРодители Цикл
КомандыРодителиДляПодчиненной.Добавить(КомандаРодитель);
КонецЦикла;

КомандыРодителиДляПодчиненной.Добавить(Имя);

Для каждого Подчиненнаякоманда Из ВложенныеКоманды Цикл
Подчиненнаякоманда.КомандыРодители = КомандыРодителиДляПодчиненной;
Expand Down
16 changes: 12 additions & 4 deletions src/core/Классы/cmd/ПараметрКоманды.os
Original file line number Diff line number Diff line change
Expand Up @@ -60,11 +60,17 @@
КонецПроцедуры

Функция ЭтоМассив() Экспорт

Возврат ТипЗнч(ТипОпции) = Тип("Массив");
//Сообщить(Тип("Массив") + " " + ТипЗнч(ТипОпции))
Возврат ТипОпции = Тип("Массив");

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

Процедура Очистить() Экспорт

Значение.Очистить();

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

Функция ЗначениеВСтроку() Экспорт

Возврат ТипЗначенияПараметра.ВСтроку(Значение);
Expand All @@ -73,7 +79,7 @@

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

Значение = ТипЗначенияПараметра.УстановитьЗначение(ВходящееЗначение);
Значение = ТипЗначенияПараметра.УстановитьЗначение(ВходящееЗначение, Значение);

УстановленаПользователем = Истина;
Если ПеременнаяВыгрузкиУстановлена Тогда
Expand Down Expand Up @@ -169,6 +175,7 @@
ТипОпции = Тип("Массив");
ТипЭлементаОпции = Тип("Дата");
ТипЗначенияПараметра = Новый ТипМассивДат(ФорматДаты);
Значение = Новый Массив;

Возврат ЭтотОбъект;

Expand All @@ -179,7 +186,7 @@
ТипОпции = Тип("Массив");
ТипЭлементаОпции = Тип("Число");
ТипЗначенияПараметра = Новый ТипМассивЧисел();

Значение = Новый Массив;
Возврат ЭтотОбъект;

КонецФункции
Expand All @@ -189,6 +196,7 @@
ТипОпции = Тип("Массив");
ТипЭлементаОпции = Тип("Строка");
ТипЗначенияПараметра = Новый ТипМассивСтрок();
Значение = Новый Массив;

Возврат ЭтотОбъект;

Expand Down
7 changes: 6 additions & 1 deletion src/core/Классы/path/ВыборСовпадений.os
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,16 @@
Контейнер.Ключ.Очистить();
КонецЕсли;

Лог.Отладка("Контейнер <%1> массив %2", Контейнер.Ключ, Контейнер.Ключ.ЭтоМассив());

Для каждого значениеКонтейнера Из Контейнер.Значение Цикл
Лог.Отладка("Установил значения %1 в контейнер %2",значениеКонтейнера, Контейнер.Ключ);

Лог.Отладка("Установил значения %1 в контейнер %2", значениеКонтейнера, Контейнер.Ключ);
Контейнер.Ключ.УстановитьЗначение(значениеКонтейнера)

КонецЦикла;



Контейнер.Ключ.УстановленаИзПеременнойОкружения = Ложь;

Expand Down
2 changes: 1 addition & 1 deletion src/core/Классы/types/ТипБулево.os
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

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

Функция УстановитьЗначение(Знач ВходящееЗначение) Экспорт
Функция УстановитьЗначение(Знач ВходящееЗначение, Значение) Экспорт

Если ТипЗнч(ВходящееЗначение) = Тип("Булево") Тогда
Возврат ВходящееЗначение;
Expand Down
2 changes: 1 addition & 1 deletion src/core/Классы/types/ТипДатаВремя.os
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

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

Функция УстановитьЗначение(Знач ВходящаяСтрока) Экспорт
Функция УстановитьЗначение(Знач ВходящаяСтрока, Значение) Экспорт

Попытка
Значение = РаботаСДатой.СтрокаВДату(ВходящаяСтрока, ФорматДаты);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

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

Функция УстановитьЗначение(Знач ВходящаяСтрока) Экспорт
Функция УстановитьЗначение(Знач ВходящаяСтрока, Значение) Экспорт

// Попытка
// Значение = РаботаСДатой.СтрокаВДату(ВходящаяСтрока, ФорматДаты);
Expand Down
Loading

0 comments on commit 8159db0

Please sign in to comment.