OneScript icon indicating copy to clipboard operation
OneScript copied to clipboard

Нужен пример консольной утилиты

Open ArsenShnurkov opened this issue 7 years ago • 18 comments

Нужен пример разбора параметров командной строки, открытия и чтения входного потока, записи выходного потока, потока ошибок (и не через консоль, а через файловые операции).

Мне бы пример скрипта, который парсит аргументы командной строки (да, я видел бибиотечку). Ну, то есть заготовку для типовой утилиты командной строки. А то пишу я, к примеру,

 поток0 = ФайловыеПотоки.Открыть("/dev/stdin",РежимОткрытияФайла.Открыть);
 поток1 = ФайловыеПотоки.Открыть("/dev/stdout",РежимОткрытияФайла.Открыть);

а оно мне выдаёт

{Модуль /home/user/ostest/1.os / Ошибка в строке: 2 / Внешнее исключение (System.IO.IOException): Sharing violation on path /dev/stdout}

ArsenShnurkov avatar Apr 22 '18 02:04 ArsenShnurkov

Чтение собственных потоков ввода отсутсвует

EvilBeaver avatar Apr 22 '18 03:04 EvilBeaver

Библиотечка для парсинга аргументов и вообще, заготовка для консольного приложения есть. См. oscript-library/os-app-template

EvilBeaver avatar Apr 22 '18 03:04 EvilBeaver

Чтение собственных потоков ввода отсутсвует

сделайте пожалуйста, я сам не справлюсь, у меня лапки

ArsenShnurkov avatar Apr 22 '18 03:04 ArsenShnurkov

https://github.com/oscript-library/oscript-app-template

EvilBeaver avatar Apr 22 '18 03:04 EvilBeaver

да, за заготовку спасибо, только заготовка - это не пример. В частности, параметры там не нашел как парсятся для разных типовых случаев (например указать параметр логический, параметр со значением, параметр со списком значений)

ArsenShnurkov avatar Apr 22 '18 04:04 ArsenShnurkov

https://github.com/oscript-library/cmdline/blob/master/readme.md

Но док неполный. Есть еще методы для добавления флаговых параметров и параметров-списков. Нужно смотреть исходники

EvilBeaver avatar Apr 22 '18 04:04 EvilBeaver

Спасибо, действительно куцый. И с потоками - это проблема, она не решилась.

ArsenShnurkov avatar Apr 22 '18 04:04 ArsenShnurkov

@ArsenShnurkov есть еще либо от меня для создания консольных приложений https://github.com/khorevaa/cli.

khorevaa avatar Apr 22 '18 04:04 khorevaa

Пример можно посмотреть вот тут https://github.com/silverbulleters/ovm

khorevaa avatar Apr 22 '18 04:04 khorevaa

Отлично, что есть целых два варианта библиотек для парсинга аргументов. Однако в документации к примеру не вижу работу со стандартными потоками (редиректами в частности).

ArsenShnurkov avatar Apr 22 '18 05:04 ArsenShnurkov

@ArsenShnurkov ну есть повод сделать PR в любую из либ. Вопрос только зачем нужен данный функционал - пока не был востребован

khorevaa avatar Apr 22 '18 05:04 khorevaa

Я думаю работа с потоками ввода и вывода это уже конкретная функциональность приложения или отдельной либы упрощающей работу с потоками. ..

khorevaa avatar Apr 22 '18 05:04 khorevaa

пока не был востребован

мне нужен. Ведь ни одну консольную утилиту без него не написать по-юниксвейному.

есть повод сделать PR

Я выше писал про лапки.

ArsenShnurkov avatar Apr 22 '18 06:04 ArsenShnurkov

@ArsenShnurkov не понятно что ты имеешь в виду... может работу с Сокетами ? Все понял. - это к движку оскрипт...

khorevaa avatar Apr 22 '18 06:04 khorevaa

Я имею в виду https://msdn.microsoft.com/en-us/library/system.console.in.aspx https://msdn.microsoft.com/en-us/library/system.console.out.aspx https://msdn.microsoft.com/en-us/library/system.console.error.aspx

ArsenShnurkov avatar Apr 22 '18 07:04 ArsenShnurkov

Да это я понял. Вообще при создании процесса из оскрипт есть возможность перехвата потоков...

khorevaa avatar Apr 22 '18 08:04 khorevaa

при создании процесса из оскрипт есть возможность перехвата потоков...

верно, но это не то, что мне нужно.

ArsenShnurkov avatar Apr 22 '18 08:04 ArsenShnurkov

@ArsenShnurkov работы с собственными stdin/stdout у движка нет. А задача на эту функциональность есть, создавал ее по наводке @awa15 я.

EvilBeaver avatar Apr 22 '18 16:04 EvilBeaver