summaryrefslogtreecommitdiff
path: root/common.go
blob: bc518becfa32caed555ff431a874de394c70c4b5 (plain)
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
package repostatus

import (
	"strings"

	"go.wit.com/log"
	// "go.wit.com/gui/gui"
)

// reports externally if something has changed
// since the last time it was asked about it
func (rs *RepoStatus) Changed() bool {
	if !rs.Ready() {
		return false
	}

	return rs.changed
}

func (rs *RepoStatus) Draw() {
	if !rs.Ready() {
		return
	}
	log.Log(CHANGE, "Draw() window ready =", rs.ready)
	rs.window.TestDraw()
}

func (rs *RepoStatus) Show() {
	if !rs.Ready() {
		return
	}
	log.Log(CHANGE, "Show() window ready =", rs.ready)
	rs.window.Show()
}

func (rs *RepoStatus) Hide() {
	if !rs.Ready() {
		return
	}
	log.Log(CHANGE, "Hide() window ready =", rs.ready)
	rs.window.Hide()
}

func (rs *RepoStatus) Toggle() {
	if !rs.Ready() {
		return
	}
	log.Log(CHANGE, "Toggle() window ready =", rs.ready)
	if rs.window.Hidden() {
		rs.Show()
	} else {
		rs.Hide()
	}
}

func (rs *RepoStatus) Ready() bool {
	if rs == nil {
		return false
	}
	if rs.window == nil {
		return false
	}
	return rs.ready
}

/*
func (rs *RepoStatus) Initialized() bool {
	log.Log(CHANGE, "checking Initialized()")
	if rs == nil {return false}
	if rs.parent == nil {return false}
	return true
}
*/

func (rs *RepoStatus) RepoType() string {
	err, output := rs.RunCmd([]string{"go", "list", "-f", "'{{if eq .Name \"main\"}}binary{{else}}library{{end}}'"})
	if err == nil {
		output = strings.Trim(output, "'")
		log.Info("go package is:", output)
		return output
	}
	log.Info("package is: unknown", err)
	return ""
}

func (rs *RepoStatus) BinaryName() string {
	// get the package name from the repo name
	path := rs.String()
	parts := strings.Split(path, "/")
	name := parts[len(parts)-1]
	return name
}

func (rs *RepoStatus) Build() bool {
	name := rs.BinaryName()
	// removes the binary if it already exists
	rs.RunCmd([]string{"rm", "-f", name})
	if rs.Exists(name) {
		log.Warn("file could not be removed filename =", name)
		return false
	}
	log.Info("need to build here", rs.String())
	rs.RunCmd([]string{"go", "build", "-v", "-x"})
	if rs.Exists(name) {
		log.Warn("build worked", name)
		return true
	}
	log.Warn("build failed", name)
	return false
}