github.com/divan/complete@v0.0.0-20170515130636-337e95201af7/cmd/install/bash.go (about) 1 package install 2 3 import "fmt" 4 5 // (un)install in bash 6 // basically adds/remove from .bashrc: 7 // 8 // complete -C </path/to/completion/command> <command> 9 type bash struct { 10 rc string 11 } 12 13 func (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 21 func (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 30 func (bash) cmd(cmd, bin string) string { 31 return fmt.Sprintf("complete -C %s %s", bin, cmd) 32 }