文档选择中的依赖选项



我想知道我是否可以在docopt中使用依赖选项。

例:

"""
Description:
  Flash a system with the manufacturing software from the specifiedx folder.
Usage:
  flash_drop.py (--drop-dir=<DIR>) [--factory-reset=<BOOL>] [--flash-all=<BOOL>] [--flash-system1=<BOOL> | --flash-system2=<BOOL>]
  flash_drop.py -h | --help
  flash_drop.py --version
Options:
  -h --help                 Show this screen.
  --version                 Show version.
  --drop-dir=DIR            Path to the drop directory
  --factory-reset=BOOL          Factory reset the chips on all selected devices. [default: False]
  --flash-all=BOOL              Flash all devices. [default: False]
  --flash-system1=BOOL          Flash first system. [default: False]
  --flash-system2=BOOL          Flash second system. [default: False]
"""

也就是说,如果未选择上一个选项,则会忽略选项的值。例如,除非设置--flash-system1否则将忽略--flash-system2的值

如果可以修改代码,则可以以编程方式忽略它们,例如:

args['flash-system2'] = args['flash-system2'] if args['flash-system1'] else None

if ('flash-system2' in args) and ('flash-system1' not in args):
    del args['flash-system2']

刚分析参数之后

不是单一的使用模式,但您可以使用 2 种模式:

Usage:
  flash_drop.py (--drop-dir=<DIR>) [options] [--flash-system1=<BOOL>]
  flash_drop.py (--drop-dir=<DIR>) [options] --flash-system1=<BOOL> --flash-system2=<BOOL>

但可能最好使用三种模式,更容易阅读 IMO:

Usage:
  flash_drop.py (--drop-dir=<DIR>) [options]
  flash_drop.py (--drop-dir=<DIR>) [options] --flash-system1=<BOOL>
  flash_drop.py (--drop-dir=<DIR>) [options] --flash-system1=<BOOL> --flash-system2=<BOOL>
  flash_drop.py -h | --help
  flash_drop.py --version

现场演示


附言

好吧,从技术上讲,你可以用一个单一的模式来做到这一点,但它开始变得很长......

Usage:
  flash_drop.py (--drop-dir=<DIR>) [options] [(--flash-system1=<BOOL>) | (--flash-system1=<BOOL> --flash-system2=<BOOL>)]

线条可能会被打破,所以也许:

Usage:
  flash_drop.py (--drop-dir=<DIR>) [options] 
                [(--flash-system1=<BOOL>) | (--flash-system1=<BOOL> --flash-system2=<BOOL>)]

就个人而言,我更喜欢 3 模式解决方案。

相关内容

  • 没有找到相关文章

最新更新