Реализовываете интерфейсы командной строки в стиле «[команда] [действие] [параметр]»?
Какой самый «чистый» способ реализовать интерфейс командной строки, похожий на git, например:
git push origin/master
git remote add origin git://example.com master
В идеале также позволяет более гибкий анализ, например,
jump_to_folder app theappname v2
jump_to_folder app theappname source
jump_to_folder app theappname source v2
jump_to_folder app theappname build v1
jump_to_folder app theappname build 1
jump_to_folder app theappname v2 build
jump_to_folder
это имя сценария,app
это команда,theappname
является параметром «fixed-location», «build» и «v2» и т. д. являются аргументами (например, возможные аргументы могут быть любым числом / любым числом с префиксом v или build / source / tmp / config)
Я мог бы просто вручную проанализировать аргументы с сериейif
/else
/elifs
, но должен быть более элегантный способ сделать это?
В качестве теоретического примера я мог бы описать схему пользовательского интерфейса.
app:
fixed: application_name
optional params:
arg subsection:
"build"
"source"
"tmp"
"config"
arg version:
integer
"v" + integer
Затем проанализируйте предоставленные аргументы через схему выше и получите словарь:
>>> print schema.parse(["app", "theappname", "v1", "source"])
{
"application_name": "theappname",
"params":{
"subsection": "source",
"version":"v1"
}
}
Существует ли такая система? Если нет, то как бы я реализовал что-то подобное?