https://github.com/oscript-library/cmdline
Парсер аргументов командной строки
https://github.com/oscript-library/cmdline
Last synced: 7 months ago
JSON representation
Парсер аргументов командной строки
- Host: GitHub
- URL: https://github.com/oscript-library/cmdline
- Owner: oscript-library
- Created: 2016-03-14T15:18:13.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2019-01-21T20:30:33.000Z (about 7 years ago)
- Last Synced: 2025-03-12T10:44:47.510Z (11 months ago)
- Language: 1C Enterprise
- Size: 1.14 MB
- Stars: 13
- Watchers: 7
- Forks: 5
- Open Issues: 3
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# Парсер командной строки
Одним из способов параметризации скрипта является передача аргументов в командной строке. Традиционно, операционная система передает аргументы командной строки в виде массива строк.
В 1Script доступна глобальная коллекция `АргументыКоманднойСтроки`, в которой можно получить значения, переданные в скрипт извне.
Понятно, что прямая обработка таких аргументов не всегда удобна, поэтому применяют библиотеки-парсеры. Библиотека **cmdline** является таким парсером для 1Script.
#Использовать cmdline
Парсер = Новый ПарсерАргументовКоманднойСтроки();
## Концепция
В парсер мы передаем наши ожидания - какие именно параметры мы ждем на входе. Парсер разбирает массив аргументов и возвращает нам значения в виде объекта. Если пользователь неправильно передал параметры, то парсер вернет `Неопределено`.
Параметры бывают двух видов:
* Позиционные - сам параметр является значением. В командной строке указано непосредственное значение
* Именованные - сначала в командной строке указано имя, затем значение
myprogram c:\file.txt -action delete
В приведенном примере в скрипт myprogram передано 3 аргумента с точки зрения ОС. При этом, первый аргумент - позиционный, у него нет предварительной части, он сам по себе и его значение `c:\file.txt`.
Далее идет *именованный* параметр `-action` и его значение - `delete`.
Чтобы задать данный синтаксис, мы должны настроить парсер:
Парсер.ДобавитьПараметр("ПутьКФайлу");
Парсер.ДобавитьИменованныйПараметр("-action");
Параметры = Парсер.Разобрать(АргументыКоманднойСтроки);
Сообщить(Параметры["ПутьКФайлу"]);
Сообщить(Параметры["-action"]);
## Команды
В более сложных случаях скрипт может принимать на вход некие "Команды", задающие режим работы. И каждая команда может иметь свой состав аргументов. Яркий пример - git. При запуске мы передаем команду и ее параметры, например:
git clone http://github.com/repo
git commit somefile.txt -m "сообщение коммита"
Сначала идет команда, а то, что идет за ней - зависит от самой команды.
Команда = Парсер.ОписаниеКоманды("init");
Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "ПутьКХранилищу");
Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "ЛокальныйКаталогГит");
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-email");
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-debug");
Парсер.ДобавитьКоманду(Команда);
Результат = Парсер.Разобрать(АргументыКоманднойСтроки);
Если Результат.Команда = "init" Тогда
Параметры = Результат.ЗначенияПараметров;
Сообщить(Параметры["ПутьКХранилищу"]);
Сообщить(Параметры["-debug"]);
КонецЕсли;