-
Notifications
You must be signed in to change notification settings - Fork 80
/
binaries.go
61 lines (52 loc) · 1.27 KB
/
binaries.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
package build
import (
"os"
"os/exec"
"sync"
"github.com/go-flutter-desktop/hover/internal/log"
)
type binLookup struct {
Name string
InstallInstructions string
fullPath string
once sync.Once
}
func (b *binLookup) FullPath() string {
b.once.Do(func() {
var err error
b.fullPath, err = exec.LookPath(b.Name)
if err != nil {
log.Errorf("Failed to lookup `%s` executable: %s. %s", b.Name, err, b.InstallInstructions)
os.Exit(1)
}
})
return b.fullPath
}
var (
goBinLookup = binLookup{
Name: "go",
InstallInstructions: "Please install go or add `--docker` to run the Hover command in a Docker container.\nhttps://golang.org/doc/install",
}
flutterBinLookup = binLookup{
Name: "flutter",
InstallInstructions: "Please install flutter or add `--docker` to run the Hover command in Docker container.\nhttps://flutter.dev/docs/get-started/install",
}
gitBinLookup = binLookup{
Name: "git",
}
dockerBinLookup = binLookup{
Name: "docker",
}
)
func GoBin() string {
return goBinLookup.FullPath()
}
func FlutterBin() string {
return flutterBinLookup.FullPath()
}
func GitBin() string {
return gitBinLookup.FullPath()
}
func DockerBin() string {
return dockerBinLookup.FullPath()
}