diff options
| author | Eyal Posener <[email protected]> | 2019-11-14 06:51:44 +0200 |
|---|---|---|
| committer | Eyal Posener <[email protected]> | 2019-11-18 01:05:47 +0200 |
| commit | 8724aaf18312e54750540a9578e00d61b1c545d8 (patch) | |
| tree | d3e736b4fb279975bbcc017ae1bad53e454c5773 /internal/install/bash.go | |
| parent | 05b68ffc813dd10c420993cb1cf927b346c057b8 (diff) | |
V2
Diffstat (limited to 'internal/install/bash.go')
| -rw-r--r-- | internal/install/bash.go | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/internal/install/bash.go b/internal/install/bash.go new file mode 100644 index 0000000..17c64de --- /dev/null +++ b/internal/install/bash.go @@ -0,0 +1,37 @@ +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) IsInstalled(cmd, bin string) bool { + completeCmd := b.cmd(cmd, bin) + return lineInFile(b.rc, completeCmd) +} + +func (b bash) Install(cmd, bin string) error { + if b.IsInstalled(cmd, bin) { + return fmt.Errorf("already installed in %s", b.rc) + } + completeCmd := b.cmd(cmd, bin) + return appendToFile(b.rc, completeCmd) +} + +func (b bash) Uninstall(cmd, bin string) error { + if !b.IsInstalled(cmd, bin) { + return fmt.Errorf("does not installed in %s", b.rc) + } + + completeCmd := b.cmd(cmd, bin) + return removeFromFile(b.rc, completeCmd) +} + +func (bash) cmd(cmd, bin string) string { + return fmt.Sprintf("complete -C %s %s", bin, cmd) +} |
