具有基本选项和子命令的命令行界面设计

时间:2011-07-06 01:53:54

标签: python command-line argparse

我正在尝试为我正在编写的工具开发命令行界面。我在类似于Fabric fab工具的界面和svn的命令行工具之间徘徊。

fab的使用信息:

Usage: fab [options] <command>[:arg1,arg2=val2,host=foo,hosts='h1;h2',...] ...

svn的使用信息:

usage: svn <subcommand> [options] [args]

请注意,svn还支持两个选项--version--quiet(至少我正在使用的选项)。

我的问题是:

  1. fab的cli(带有多个命令,每个命令都可以有参数)在命令行工具中设计常见吗?对我来说,svn工具的cli似乎更常用(但不确定)。
  2. 使用plac(或argparse)直接实现fab的cli会不会直接?
  3. 如果我决定使用svn的cli,可以使用plac实现吗?我喜欢plac,虽然我还没有弄清楚如何直接向工具添加选项,而不是子命令。它绝对可以使用argparse实现。
  4. P.S。:fab的cli吸引我的唯一原因是,一个人可以一步完成多项任务,但是易于实施是我的主要关注点

1 个答案:

答案 0 :(得分:4)

  1. 颠覆的方式更为标准。
  2. 可能不是。
  3. 你可以用手斧切黄油。
  4. 如果您想简化文档和使用,请使用SVN的方式。我可以看出为什么fab的方式似乎很吸引人,这对程序员来说是合乎逻辑的。但它实际上很复杂并且让用户搞砸了。

    Plac看起来很酷,但你需要安装它。您的用户也是。

    在软件工程方面,我喜欢遵循一条简单的规则: 保持简单和标准,当您真正需要时,使用尖端技术。 应尽可能实现复古兼容性。

    然而,你只是鬼混,不打算分发你的作品,然后继续,松散的方式和使用flac;)。