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