0

我想构建一个类似于 git have 的 ui git <command> [<param1> ...]。到目前为止我想出的是:

function git -d "Description"
    switch $argv[1]
        case branch
            git_branch $argv[2]
        case reset
            git_reset
    end
end

function git_branch -d "Description for branch"
    do_something $argv[1]
end

function git_reset -d "Description for reset"
    do_something_else
end

它可以工作,但有几个问题:
1. Fish 没有选择自动完成的可用命令;
2. 如果我git不带参数运行,它不会打印出命令列表,也不会为它们提取描述。

在我看来,我正在做的不是用鱼构建命令行实用程序的“正确”方式。那么,正确的方法是什么?

4

1 回答 1

0

也许你的问题出现是因为你的 switch 语句没有默认分支,所以你永远不会调用实际的 git 命令。尝试:

function git -d "Description"
    switch $argv[1]
        case branch
            git_branch $argv[2]
        case reset
            git_reset
        case '*'
            command git $argv
    end
end

为了防止提供零参数的情况,我这样做:

function git -d "Description"
    set -q argv[1]
    and switch $argv[1]
        case branch
            git_branch $argv[2]
            return
        case reset
            git_reset
            return
    end
    command git $argv
end
于 2014-04-02T13:43:00.933 回答