Ich bin auf der Suche nach einer Bibliothek, die eine Monade verwendet, um über die Aufregung der Kommandozeilenargumente zu analysieren, die Analyse und Hilfe zu generieren. Ich habe folgendes ziemlich offensichtlich Nutzungsmuster im Sinn:Befehlszeilenargumente lesen Monad-Bibliothek
main = do
portOrSocket <- Args.run $ do
mbSocket <- Args.read $ Args.Arg "s" "socket" "Description"
mbPort <- Args.read $ Args.Arg "p" "port" "Description"
case mbSocket of
Just socket -> return $ Right socket
Nothing -> case mbPort of
Just port -> return $ Left port
Nothing -> return $ Left defaultPort
...
Der obige Code hat alle erforderlichen Informationen, um Parsing, Validierung und Nutzung Generation zu verarbeiten und IMO ist ziemlich einfach zu verstehen. Leider habe ich nach dem Durchschauen von Paketen wie cmdargs, cmdlib, parseargs und ReadArgs nichts gefunden. Aber bevor ich in die Implementierung gehe, möchte ich sicherstellen, dass ich nichts verpasst habe. Gibt es also eine Bibliothek, die einen ähnlichen Ansatz für das Problem ausnutzt?
Haben Sie versucht, 'optparse-applicative'? –
+1 für 'optarse-applicative'. Es ist großartig. – jtobin
Es scheint fast unmöglich zu sein, automatische Hilfemeldungen zu erzeugen, wenn Parameter von Werten anderer Parameter abhängen. Dies ist wahrscheinlich der Grund, warum _optsparse-applicative_ Applicative verwendet. –