Skip to content

Commit 8159db0

Browse files
committed
Finish 0.9.2
2 parents 4f3dd54 + c762d17 commit 8159db0

16 files changed

+179
-195
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ before_install:
2020
- sudo oscript /usr/share/oscript/lib/opm/src/opm.os install opm
2121

2222
install:
23-
- sudo oscript /usr/share/oscript/lib/opm/src/opm.os install 1testrunner
23+
- sudo oscript /usr/share/oscript/lib/opm/src/opm.os install 1testrunner@1.5.0
2424
- sudo oscript /usr/share/oscript/lib/opm/src/opm.os install 1bdd
2525
- sudo oscript /usr/share/oscript/lib/opm/src/opm.os install
2626

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
# cli
22

3+
[![Stars](https://img.shields.io/github/stars/khorevaa/cli.svg?label=Github%20%E2%98%85&a)](https://github.com/khorevaa/cli/stargazers)
4+
[![Release](https://img.shields.io/github/tag/khorevaa/cli.svg?label=Last%20release&a)](https://github.com/khorevaa/cli/releases)
5+
[![Открытый чат проекта 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)
6+
37
[![Build Status](https://travis-ci.org/khorevaa/cli.svg?branch=master)](https://travis-ci.org/khorevaa/cli)
48
[![Coverage Status](https://coveralls.io/repos/github/khorevaa/cli/badge.svg?branch=master)](https://coveralls.io/github/khorevaa/cli?branch=master)
59

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

813
## Быстрый старт

packagedef

Lines changed: 1 addition & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -3,64 +3,8 @@
33
// Полную документацию см. на hub.oscript.io/packaging
44
//
55

6-
///////////////////////////////////////////////////////////////////
7-
// Процедуры установки пакета с клиентской машины
8-
///////////////////////////////////////////////////////////////////
9-
10-
11-
// Вызывается пакетным менеджером после распаковки пакета на клиентскую машину.
12-
//
13-
// Параметры:
14-
// КаталогУстановкиПакета - строка. Путь в который пакетный менеджер устанавливает текущий пакет.
15-
//
16-
Процедура ПриУстановке(Знач КаталогУстановкиПакета, СтандартнаяОбработка) Экспорт
17-
// TODO: Реализуйте спец. логику установки, если требуется
18-
КонецПроцедуры
19-
20-
21-
///////////////////////////////////////////////////////////////////
22-
// Процедуры сборки пакета
23-
///////////////////////////////////////////////////////////////////
24-
25-
26-
// Вызывается пакетным менеджером перед началом сборки пакета.
27-
//
28-
// Параметры:
29-
// РабочийКаталог - Строка - Текущий рабочий каталог с исходниками пакета.
30-
//
31-
Процедура ПередСборкой(Знач РабочийКаталог) Экспорт
32-
// TODO: Реализуйте спец. логику сборки, если требуется
33-
КонецПроцедуры
34-
35-
36-
// Вызывается пакетным менеджером после помещения файлов в пакет.
37-
//
38-
// Параметры:
39-
// РабочийКаталог - Строка - Текущий рабочий каталог с исходниками пакета.
40-
// АрхивПакета - ЗаписьZIPФайла - ZIP-архив с содержимым пакета (включаемые файлы).
41-
//
42-
Процедура ПриСборке(Знач РабочийКаталог, Знач АрхивПакета) Экспорт
43-
// TODO: Реализуйте спец. логику сборки, если требуется
44-
// АрхивПакета.Добавить(ПолныйПутьНужногоФайла,
45-
// РежимСохраненияПутейZIP.СохранятьОтносительныеПути,
46-
// РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);
47-
КонецПроцедуры
48-
49-
50-
// Вызывается пакетным менеджером после сборки пакета.
51-
//
52-
// Параметры:
53-
// РабочийКаталог - Строка - Текущий рабочий каталог с исходниками пакета.
54-
// ПутьКФайлуПакета - Строка - Полный путь к собранному файлу пакета.
55-
//
56-
Процедура ПослеСборки(Знач РабочийКаталог, Знач ПутьКФайлуПакета) Экспорт
57-
// TODO: Реализуйте спец. логику сборки, если требуется
58-
КонецПроцедуры
59-
60-
61-
626
Описание.Имя("cli")
63-
.Версия("0.9.1")
7+
.Версия("0.9.2")
648
.Автор("Khorev Aleksey")
659
.АдресАвтора("[email protected]")
6610
.Описание("Данный пакет облегчает создание консольных приложений на Oscript")

src/core/Классы/cmd/КомандаПриложения.os

Lines changed: 69 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,12 @@
7575

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

78+
Функция ПолучитьПодкоманды() Экспорт
79+
80+
Возврат ВложенныеКоманды;
81+
82+
КонецФункции
83+
7884
Функция ПолучитьИмяКоманды() Экспорт
7985
Возврат Имя;
8086
КонецФункции
@@ -99,15 +105,32 @@
99105

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

108+
Функция ПараметрыКоманды() Экспорт
109+
110+
ПКоманды = Новый Соответствие;
111+
112+
Для каждого КлючЗначение Из ОпцииИндекс Цикл
113+
ПКоманды.Вставить(КлючЗначение.Ключ, КлючЗначение.Значение.Значение);
114+
КонецЦикла;
115+
116+
Для каждого КлючЗначение Из АргументыИндекс Цикл
117+
ПКоманды.Вставить(КлючЗначение.Ключ, КлючЗначение.Значение.Значение);
118+
КонецЦикла;
119+
120+
Возврат ПКоманды;
121+
122+
КонецФункции
123+
124+
102125
Процедура ПередВыполнениемКоманды(Знач Команда) Экспорт
103126

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

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

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

184+
ДействиеПередВыполнением.Исполнить(ЭтотОбъект);
185+
161186
Если КонечныйИндексКоманды = АргументыCLI.ВГраница() Тогда
162-
163-
ДействиеПередВыполнением.Исполнить(ЭтотОбъект);
164-
187+
165188
Лог.Отладка("Выполняю полезную работу %1", Имя);
166189
ДействиеВыполнения.Исполнить(ЭтотОбъект);
167190

168-
ДействиеПослеВыполнения.Исполнить(ЭтотОбъект);
169-
170191
Возврат;
171192
КонецЕсли;
172193

@@ -190,13 +211,19 @@
190211

191212
ВложеннаяКоманда.НачалоЗапуска();
192213
ВложеннаяКоманда.Запуск(АргументыПодкоманды);
214+
215+
ДействиеПослеВыполнения.Исполнить(ЭтотОбъект);
216+
193217
Возврат;
194218

195219
КонецЕсли;
196220

197221
КонецЦикла;
198222

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

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

355+
МаксимальнаяДлинаКоманд = 0;
356+
357+
Для каждого ВложеннаяКоманда Из ВложенныеКоманды Цикл
358+
НоваяДлина = СтрДлина(СтрСоединить(ВложеннаяКоманда.ПолучитьСинонимы(),", "));
359+
МаксимальнаяДлинаКоманд = ?(НоваяДлина > МаксимальнаяДлинаКоманд, НоваяДлина,МаксимальнаяДлинаКоманд);
360+
КонецЦикла;
361+
362+
328363
Для каждого ВложеннаяКоманда Из ВложенныеКоманды Цикл
329364

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

332370
КонецЦикла;
333371

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

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

366404
КонецЦикла;
367405

368-
Таблица.Сортировать("ДлинаНаименования УБЫВ");
369-
МаксимальнаяДлина = Таблица[0].ДлинаНаименования;
406+
Если Таблица.Количество() = 0 Тогда
407+
Возврат Таблица;
408+
КонецЕсли;
409+
410+
ТаблицаДляСортировки = Таблица.Скопировать(,"ДлинаНаименования");
411+
ТаблицаДляСортировки.Сортировать("ДлинаНаименования УБЫВ");
412+
413+
МаксимальнаяДлина = ТаблицаДляСортировки[0].ДлинаНаименования;
370414

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

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

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

411455
КонецЦикла;
412456

413-
Таблица.Сортировать("ДлинаНаименования УБЫВ");
414-
МаксимальнаяДлина = Таблица[0].ДлинаНаименования;
457+
Если Таблица.Количество() = 0 Тогда
458+
Возврат Таблица;
459+
КонецЕсли;
460+
461+
ТаблицаДляСортировки = Таблица.Скопировать(,"ДлинаНаименования");
462+
ТаблицаДляСортировки.Сортировать("ДлинаНаименования УБЫВ");
463+
МаксимальнаяДлина = ТаблицаДляСортировки[0].ДлинаНаименования;
415464

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

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

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

504553
КонецЦикла;
505554

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

516565
КомандыРодителиДляПодчиненной = Новый Массив;
517-
КомандыРодителиДляПодчиненной.Добавить(Имя);
518-
566+
519567
Для каждого КомандаРодитель Из КомандыРодители Цикл
520568
КомандыРодителиДляПодчиненной.Добавить(КомандаРодитель);
521569
КонецЦикла;
570+
571+
КомандыРодителиДляПодчиненной.Добавить(Имя);
522572

523573
Для каждого Подчиненнаякоманда Из ВложенныеКоманды Цикл
524574
Подчиненнаякоманда.КомандыРодители = КомандыРодителиДляПодчиненной;

src/core/Классы/cmd/ПараметрКоманды.os

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,17 @@
6060
КонецПроцедуры
6161

6262
Функция ЭтоМассив() Экспорт
63-
64-
Возврат ТипЗнч(ТипОпции) = Тип("Массив");
63+
//Сообщить(Тип("Массив") + " " + ТипЗнч(ТипОпции))
64+
Возврат ТипОпции = Тип("Массив");
6565

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

68+
Процедура Очистить() Экспорт
69+
70+
Значение.Очистить();
71+
72+
КонецПроцедуры
73+
6874
Функция ЗначениеВСтроку() Экспорт
6975

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

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

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

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

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

@@ -179,7 +186,7 @@
179186
ТипОпции = Тип("Массив");
180187
ТипЭлементаОпции = Тип("Число");
181188
ТипЗначенияПараметра = Новый ТипМассивЧисел();
182-
189+
Значение = Новый Массив;
183190
Возврат ЭтотОбъект;
184191

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

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

src/core/Классы/path/ВыборСовпадений.os

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,16 @@
1616
Контейнер.Ключ.Очистить();
1717
КонецЕсли;
1818

19+
Лог.Отладка("Контейнер <%1> массив %2", Контейнер.Ключ, Контейнер.Ключ.ЭтоМассив());
20+
1921
Для каждого значениеКонтейнера Из Контейнер.Значение Цикл
20-
Лог.Отладка("Установил значения %1 в контейнер %2",значениеКонтейнера, Контейнер.Ключ);
22+
23+
Лог.Отладка("Установил значения %1 в контейнер %2", значениеКонтейнера, Контейнер.Ключ);
2124
Контейнер.Ключ.УстановитьЗначение(значениеКонтейнера)
2225

2326
КонецЦикла;
27+
28+
2429

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

src/core/Классы/types/ТипБулево.os

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

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

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

1212
Если ТипЗнч(ВходящееЗначение) = Тип("Булево") Тогда
1313
Возврат ВходящееЗначение;

src/core/Классы/types/ТипДатаВремя.os

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

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

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

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

src/core/Классы/types/ТипДлительность.os

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

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

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

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

0 commit comments

Comments
 (0)