首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vorpal命令上下文

Vorpal命令上下文
EN

Stack Overflow用户
提问于 2018-04-02 16:06:13
回答 1查看 328关注 0票数 8

我正在开发一个基于Vorpal (http://vorpal.js.org/)和NodeJs的命令行应用程序。

我想知道是否有一种方法可以根据上下文允许(并在帮助中列出)命令。

例如,我可能想要在context 1上执行命令A和B,在context 2上执行命令C和D,然后我会有一个切换context的命令,该命令应该始终有效。

EN

回答 1

Stack Overflow用户

发布于 2018-04-10 05:49:05

您需要组合函数show并重定义上下文的exit函数。简化实现示例:

代码语言:javascript
复制
var Vorpal = require('vorpal')
var mainDelimiter = 'main'
var main = new Vorpal().delimiter(mainDelimiter + '>')

var contexts = [
    {
        name: 'context1', help: 'context1 help',
        init: function (instance) {
            instance
                .command('A', 'A help')
                .action(function (args, cb) {
                    this.log('A...')
                    cb()
                })
            instance
                .command('B', 'B help')
                .action(function (args, cb) {
                    this.log('B...')
                    cb()
                })
        }
    },
    {
        name: 'context2', help: 'context2 help',
        init: function (instance) {
            instance
                .command('C', 'C help')
                .action(function (args, cb) {
                    this.log('C...')
                    cb()
                })
            instance
                .command('D', 'D help')
                .action(function (args, cb) {
                    this.log('D...')
                    cb()
                })
        }
    }

]

contexts.forEach(function (ctx, i) {
    var instance = new Vorpal().delimiter(mainDelimiter + '/' + ctx.name + '>')
    ctx.init(instance)

    // Override the function "exit" for the context
    instance.find('exit').remove()
    instance
        .command('exit', 'Exit context')
        .action(function (args, cb) {
            // Switch to the main context
            main.show()
            cb()
        })
    main
        .command(ctx.name, ctx.help)
        .action(function (args, cb) {
            // Switch to the selected context
            instance.show()
            cb()
        })
})

main.show()
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49607569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档