CLI中通配符路由的不良行为

时间:2014-04-08 12:58:06

标签: javascript node.js routes command-line-interface flatiron.js

我的CLI应用程序中包含以下路由:

system
system *
system info
system info *
system settings
system settings *
system tunables
system tunables *
system logging
system logging *
system logging settings
system logging settings *

并想要这样的行为:

  • 如果输入system命令 - > exec system handler
  • 如果输入system ANYTHING_BUT_CONFIGURED_ROUTES命令 - > exec system *处理程序,除了ANYTHING_BUT_CONFIGURED_ROUTES以外的任何其他内容:

    信息 设置 可调参数 登录

问题与执行顺序相关app.cmd()

  • 如果我按照与上述相反的顺序注册路由,则处理程序正确执行

  • 如果我按照与上述相同的顺序注册路线,如果我执行system info,则会触发system *的处理程序,而不是system info

    < / LI>

有关如何克服这个问题的任何建议吗?

我目前通过循环和构建一个反向数组然后再次循环来解决这个问题,但这需要花费大量时间来处理一个简单的CLI应用程序,这很麻烦,所以我正在寻找一个不同的溶液

1 个答案:

答案 0 :(得分:0)

不知道你使用的模块,问题是有道理的,它首先找到匹配,而不是最具体......但你不必完全重新安排你的列表,只需将通配符放在后面具体条目如下:

system
system info
system info *
system settings
system settings *
system tunables
system tunables *
system logging
system logging settings
system logging settings *
system logging *
system *