【问题标题】:Command-line interface design with base options and subcommands带有基本选项和子命令的命令行界面设计
【发布时间】:2011-09-29 06:21:09
【问题描述】:

我正在尝试为我正在编写的工具开发命令行界面。我在类似于 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 来实现。

P.S.:fab 的 cli 吸引我的唯一原因是可以一步完成多项任务,但易于实施是我主要关心的问题

【问题讨论】:

    标签: python command-line argparse


    【解决方案1】:
    1. subversion 的方式更标准。
    2. 可能不会。
    3. 你可以用手斧切黄油。

    如果您想简化文档和使用,请使用 SVN 的方式。我明白为什么 fab 的方式看起来很吸引人,这对程序员来说是合乎逻辑的。但它实际上对用户来说很复杂和混乱。

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

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

    但是,您只是在胡闹,不打算分发您的作品,然后继续,按照 flab 的方式使用 flac ;)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-28
      • 2013-03-20
      • 2017-05-16
      • 2020-10-25
      • 2021-06-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多