-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathlazycomplete.go
66 lines (54 loc) · 1.19 KB
/
lazycomplete.go
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package main
import (
_ "embed"
"github.com/rsteube/lazycomplete/internal/ps"
"strings"
)
//go:embed internal/shell/bash.sh
var bash string
//go:embed internal/shell/elvish.elv
var elvish string
//go:embed internal/shell/fish.sh
var fish string
//go:embed internal/shell/xonsh.py
var xonsh string
//go:embed internal/shell/xonsh_header.py
var xonshHeader string
//go:embed internal/shell/oil.sh
var oil string
//go:embed internal/shell/powershell_header.ps1
var powershellHeader string
//go:embed internal/shell/powershell.ps1
var powershell string
//go:embed internal/shell/zsh.sh
var zsh string
func Fmt(completers map[string]string) string {
header := ""
body := ""
switch ps.DetermineShell() {
case "bash":
body = bash
case "elvish":
body = elvish
case "fish":
body = fish
case "oil":
body = oil
case "powershell":
header = powershellHeader
body = powershell
case "xonsh":
header= xonshHeader
body = xonsh
case "zsh":
body = zsh
}
script := header
for cmd, completer := range completers {
out := body
out = strings.Replace(out, "{{.CMD}}", cmd, -1)
out = strings.Replace(out, "{{.COMPLETER}}", completer, -1)
script = script + "\n" + out
}
return script
}