{"id":24370152,"url":"https://github.com/oscript-library/cmdline","last_synced_at":"2026-02-02T11:44:23.240Z","repository":{"id":73676798,"uuid":"53867364","full_name":"oscript-library/cmdline","owner":"oscript-library","description":"Парсер аргументов командной строки","archived":false,"fork":false,"pushed_at":"2019-01-21T20:30:33.000Z","size":1191,"stargazers_count":13,"open_issues_count":3,"forks_count":5,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-06-25T13:52:50.916Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"1C Enterprise","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oscript-library.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-03-14T15:18:13.000Z","updated_at":"2024-09-05T11:54:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"d5d15c07-9927-4985-b792-787562732607","html_url":"https://github.com/oscript-library/cmdline","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/oscript-library/cmdline","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oscript-library%2Fcmdline","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oscript-library%2Fcmdline/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oscript-library%2Fcmdline/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oscript-library%2Fcmdline/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oscript-library","download_url":"https://codeload.github.com/oscript-library/cmdline/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oscript-library%2Fcmdline/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29011588,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-02T10:37:29.253Z","status":"ssl_error","status_checked_at":"2026-02-02T10:37:28.644Z","response_time":58,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-01-19T04:12:54.231Z","updated_at":"2026-02-02T11:44:23.211Z","avatar_url":"https://github.com/oscript-library.png","language":"1C Enterprise","readme":"# Парсер командной строки\n\nОдним из способов параметризации скрипта является передача аргументов в командной строке. Традиционно, операционная система передает аргументы командной строки в виде массива строк.\n\nВ 1Script доступна глобальная коллекция `АргументыКоманднойСтроки`, в которой можно получить значения, переданные в скрипт извне.\n\nПонятно, что прямая обработка таких аргументов не всегда удобна, поэтому применяют библиотеки-парсеры. Библиотека **cmdline** является таким парсером для 1Script.\n\n\t#Использовать cmdline\n\t\n\tПарсер = Новый ПарсерАргументовКоманднойСтроки();\n\n## Концепция\n\nВ парсер мы передаем наши ожидания - какие именно параметры мы ждем на входе. Парсер разбирает массив аргументов и возвращает нам значения в виде объекта. Если пользователь неправильно передал параметры, то парсер вернет `Неопределено`.\n\nПараметры бывают двух видов:\n\n* Позиционные - сам параметр является значением. В командной строке указано непосредственное значение\n* Именованные - сначала в командной строке указано имя, затем значение\n    \n\t\tmyprogram c:\\file.txt -action delete\n\nВ приведенном примере в скрипт myprogram передано 3 аргумента с точки зрения ОС. При этом, первый аргумент - позиционный, у него нет предварительной части, он сам по себе и его значение `c:\\file.txt`.\n\nДалее идет *именованный* параметр `-action` и его значение - `delete`.\n\nЧтобы задать данный синтаксис, мы должны настроить парсер:\n\n\tПарсер.ДобавитьПараметр(\"ПутьКФайлу\");\n\tПарсер.ДобавитьИменованныйПараметр(\"-action\");\n\n    Параметры = Парсер.Разобрать(АргументыКоманднойСтроки);\n\tСообщить(Параметры[\"ПутьКФайлу\"]);\n\tСообщить(Параметры[\"-action\"]);\n\n## Команды\nВ более сложных случаях скрипт может принимать на вход некие \"Команды\", задающие режим работы. И каждая команда может иметь свой состав аргументов. Яркий пример - git. При запуске мы передаем команду и ее параметры, например:\n\n    git clone http://github.com/repo\n    git commit somefile.txt -m \"сообщение коммита\"\n\nСначала идет команда, а то, что идет за ней - зависит от самой команды.\n\n\tКоманда = Парсер.ОписаниеКоманды(\"init\");\n\t\n\tПарсер.ДобавитьПозиционныйПараметрКоманды(Команда, \"ПутьКХранилищу\");\n\tПарсер.ДобавитьПозиционныйПараметрКоманды(Команда, \"ЛокальныйКаталогГит\");\n\t\n\tПарсер.ДобавитьИменованныйПараметрКоманды(Команда, \"-email\");\n\tПарсер.ДобавитьИменованныйПараметрКоманды(Команда, \"-debug\");\n\tПарсер.ДобавитьКоманду(Команда);\n\n\tРезультат = Парсер.Разобрать(АргументыКоманднойСтроки);\n\tЕсли Результат.Команда = \"init\" Тогда\n\t\tПараметры = Результат.ЗначенияПараметров;\n\t\tСообщить(Параметры[\"ПутьКХранилищу\"]);\n\t\tСообщить(Параметры[\"-debug\"]);\n\tКонецЕсли;\n\t\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foscript-library%2Fcmdline","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foscript-library%2Fcmdline","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foscript-library%2Fcmdline/lists"}