我的命令行实用程序应该接受几个相互连接的过滤器(类似于 Unix 管道)。
每个过滤器都有许多选项。例如chain过滤器目前有以下选项:
-t NAMESPACE, --target NAMESPACE
target namespace(s)
-s {precedence,doc}, --next-script {precedence,doc}
"next script" algorithm ("precedence" is not
supported)
-n {ignore,remove,error}, --not-in-target {ignore,remove,error}
what if a result is not in target NS
-u URL, --universal-precedence URL
universal precedence
-W {inverseofsum,sumofinverses}, --weight-formula {inverseofsum,sumofinverses}
formula for weighting scripts
如何在命令参数中表示过滤器的工作流程?
第一个想法是使用 JSON 数组。但是 JSON 并不是一个很好的命令行格式。
下一个想法是用一些分隔符分隔过滤器。它可能是--或--separator或像这样。但是--已经被用来将命令行选项与其他命令行参数分开,--separator看起来不太好。
另一个问题是,当我使用 Python 3 时argparse,这个包似乎不太适合在一个命令行中链接的几个子命令,例如:
boiler script filter1 --separator \
chain -t http://www.w3.org/1999/xhtml -n error --separator \
transformation filter2 --arg x=y --separator \
transformation filter3
在这里,我尝试链接四个过滤器子命令:script、chain、tranformation、tranformation。但是 Python argparse(似乎)不支持在一个命令行中包含多个子命令。
因此,如果不是,argparse那么使用什么库来处理这样的命令行?
我的问题:
这些命令行有哪些可能的用户友好格式?
如何用 Python 解析它argparse?
如果不是argparse,那又是什么?
另请注意,将来我可能会决定用Python 以外的其他语言(可能是D语言)重写我的软件。
弑天下
相关分类