3

我正在编写一个小命令行 todo 应用程序,它具有通用的类 git 界面。

它有几个可以执行的任务:add, list, complete, ... 所有这些都应该可以通过todo <task>界面访问。例如todo list

与 git 一样,其中一些任务采用变量或选项,todo应用程序也可以采用选项(适用于任何类型的任务,例如配置文件的位置)。

最终应该能够写出类似的东西:

todo -c ~/.config/todorc add --desc "walk the dog"

注意这里的顺序:全局选项在实际任务之前给出(并且只能给出) 。典型调用的骨架是:

todo [global options] <task> [task options/arguments]

我正在用 C++ 编写这个项目,并且基本的后端库已经完成。我现在正试图弄清楚如何编写用户界面。

我应该使用一个单独main处理每个任务的大程序,还是应该将程序分成几个子程序并从一个简单的 shell 脚本中调用它们(如果我是正确的,这就是 git 所做的)。后者似乎更易于维护,但更难将全局选项传递给任务可执行文件。

有没有关于这个主题的文献?

4

1 回答 1

2

你写它是为了一个小的 命令行应用程序。然后我会选择一个二进制文件。最简单的方法可能是使用Boost.Program_options

从我的角度来看,限制某些选项的位置是一个非常糟糕的主意。它会使大多数用户感到困惑。最坏的情况是位置改变了选项的语义。gcc使用该-l选项并在 10 年后您仍然发现新用户抱怨他们的程序链接不正确。

于 2012-09-15T21:57:57.163 回答