Реализовываете интерфейсы командной строки в стиле «[команда] [действие] [параметр]»?

Какой самый «чистый» способ реализовать интерфейс командной строки, похожий на 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"
    }
}

Существует ли такая система? Если нет, то как бы я реализовал что-то подобное?

Ответы на вопрос(6)

Ваш ответ на вопрос