1package install 2 3import "fmt" 4 5// (un)install in bash 6// basically adds/remove from .bashrc: 7// 8// complete -C </path/to/completion/command> <command> 9type bash struct { 10 rc string 11} 12 13func (b bash) Install(cmd, bin string) error { 14 completeCmd := b.cmd(cmd, bin) 15 if lineInFile(b.rc, completeCmd) { 16 return fmt.Errorf("already installed in %s", b.rc) 17 } 18 return appendToFile(b.rc, completeCmd) 19} 20 21func (b bash) Uninstall(cmd, bin string) error { 22 completeCmd := b.cmd(cmd, bin) 23 if !lineInFile(b.rc, completeCmd) { 24 return fmt.Errorf("does not installed in %s", b.rc) 25 } 26 27 return removeFromFile(b.rc, completeCmd) 28} 29 30func (bash) cmd(cmd, bin string) string { 31 return fmt.Sprintf("complete -C %s %s", bin, cmd) 32} 33