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  }