在cmder中添加命令提示功能,添加了goctl命令的提示

经常用cmder会发现输入git后按tab键会自动提示git命令的子命令,非常的方便。
最近我在用go-zero框架,但是每次敲goctl命令都需要翻一下笔记。
因此我想让cmder支持goctl命令的自动提示功能,最终发现cmdervendorclink-completionsgit.lua就是实现git自动联想的脚本。
因此我仿照着写了一份goctl的脚本,由于没有深入研究,写的都很粗浅,但是常用命令支持是没问题的。

下面是脚本goctl.lua

local parser = clink.arg.new_parser

local style_parser = parser({
    "gozero","go_zero","GoZero"
})
local goctl_parser = parser(
    {
        "upgrade",
        "api" .. parser({
            "-o",
            "new",
            "format" .. parser({
                "-dir",
                "-iu",
                "-stdin"
            }),
            "validate" .. parser({
                "-api"
            }),
            "doc" .. parser({
                "-dir"
            }),
            "go" .. parser({
                "-dir",
                "-api",
                "-force",
                "-style" .. style_parser
            }),
            "java" .. parser({
                "-dir",
                "-api"
            }),
            "ts" .. parser({
                "-dir",
                "-api",
                "webapi",
                "caller",
                "unwrap"
            }),
            "dart" .. parser({
                "-dir",
                "-api"
            }),
            "kt" .. parser({
                "-dir",
                "-api",
                "-pkg"
            }),
            "plugin" .. parser({
                "-plugin",
                "-dir",
                "-api",
                "-style" .. style_parser
            })
        }),
        "docker" .. parser({"-go","-port"}),
        "kube" .. parser({
            "deploy" .. parser({
                "-name","-namespace","-image","-secret","-requestCpu","-requestMem","-limitCpu","-limitMem","-o",
                "-replicas","-revisions","-port","-nodePort","-minReplicas","-maxReplicas"
            })
        }),
        "rpc" .. parser({
            "new" .. parser({"-idea","-style" .. style_parser}),
            "templae" .. parser({"-idea","-o"}),
            "proto" .. parser({"-src","-s","-proto_path","-l","-dir","-d","-idea","-style" .. style_parser})
        }),
        "model" .. parser({
            "mysql" .. parser({
                "ddl" .. parser({"-src","-s","-dir","-d","-cache","-c","-idea","-style" .. style_parser}),
                "datasource" .. parser({"-url","-table","-t","-dir","-d","-cache","-c","-idea","-style" .. style_parser})
            })
        }),
        "config" .. parser({"-p"}),
        "template" .. parser({
            "init",
            "clean",
            "update" .. parser({"-c"}),
            "revert" .. parser({"-c","-n"})
        }),
        "help",
        "h"
    },
    "--help",
    "-h",
    "--version",
    "-v"
)

clink.arg.register_parser("goctl", goctl_parser)

最终放到cmdervendorclink-completionsgoctl.lua目录就可以了。

作者:janbar
本文版权归作者和博客园所有,欢迎转载,转载请标明出处。喜欢我的文章请 [关注我] 吧。
如果您觉得本篇博文对您有所收获,可点击 [推荐] [收藏] ,或到右侧 [打赏] 里请我喝杯咖啡,非常感谢。
原文地址:https://www.cnblogs.com/janbar/p/14611747.html