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) IsInstalled(cmd, bin string) bool {
14	completeCmd := b.cmd(cmd, bin)
15	return lineInFile(b.rc, completeCmd)
16}
17
18func (b bash) Install(cmd, bin string) error {
19	if b.IsInstalled(cmd, bin) {
20		return fmt.Errorf("already installed in %s", b.rc)
21	}
22	completeCmd := b.cmd(cmd, bin)
23	return appendToFile(b.rc, completeCmd)
24}
25
26func (b bash) Uninstall(cmd, bin string) error {
27	if !b.IsInstalled(cmd, bin) {
28		return fmt.Errorf("does not installed in %s", b.rc)
29	}
30
31	completeCmd := b.cmd(cmd, bin)
32	return removeFromFile(b.rc, completeCmd)
33}
34
35func (bash) cmd(cmd, bin string) string {
36	return fmt.Sprintf("complete -C %s %s", bin, cmd)
37}
38