Implementieren einer Befehlszeilenschnittstelle im Stil "[Befehl] [Aktion] [Parameter]"?
Was ist der "sauberste" Weg, um eine Befehlszeilen-Benutzeroberfläche zu implementieren, ähnlich wie bei git, zum Beispiel:
git push origin/master
git remote add origin git://example.com master
Idealerweise auch das flexiblere Parsen zulassen, zum Beispiel
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
ist der Skriptname,app
ist der Befehl,theappname
ist ein Parameter mit festem Speicherort, "build" und "v2" usw. sind Argumente (Mögliche Argumente sind beispielsweise eine beliebige Zahl / eine beliebige Zahl mit dem Präfix v oder build / source / tmp / config).
Ich könnte die Argumente einfach manuell mit einer Reihe von @ analysiereif
/else
/elifs
, aber es muss einen eleganteren Weg geben, dies zu tun?
ls rein theoretisches Beispiel könnte ich das UI-Schema beschreiben.
app:
fixed: application_name
optional params:
arg subsection:
"build"
"source"
"tmp"
"config"
arg version:
integer
"v" + integer
Analysieren Sie dann die angegebenen Argumente anhand des obigen Schemas und erhalten Sie ein Wörterbuch:
>>> print schema.parse(["app", "theappname", "v1", "source"])
{
"application_name": "theappname",
"params":{
"subsection": "source",
"version":"v1"
}
}
Gibt es ein solches System? Wenn nicht, wie würde ich etwas in diese Richtung implementieren?