2014-03-29 1 views
0

나는 자식이 git <command> [<param1> ...] 인 것과 비슷한 UI를 만들고 싶다. 그것은 작동fish shell 명령 줄 UI 패턴이란 무엇입니까?

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. 물고기;
2. 인수가없는 git을 실행하면 명령 목록이 인쇄되지 않고 둘 다 설명을 가져 오지 않습니다.

내가하고있는 일이 물고기와 함께 명령 줄 유틸리티를 만드는 "올바른"방법이 아니라고 생각됩니다. 그래서 올바른 방법은 무엇입니까?

+0

당신이 망할 놈을 다시 구현하려고를! – Biffen

+0

@Biffen 물론 워크 플로우 자동화를위한 일련의 스크립트가 있고 동일한 네임 스페이스를 통해 이들 모두에 액세스 할 수 있기를 원합니다. 그래서 다른 프로젝트에서 'project_1'과 같은 간단한 이름을 가질 수 있습니다. 동기화 '등. – Andrew

+0

흠, 나는 자식 함수도 가지고 있으며,'git '은 자식 부속 명령을 자동 완성합니다. 나는 특별한 git 완료가 없다. –

답변

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