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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
package main
// An app to submit patches for the 30 GO GUI repos
import (
"strings"
"go.wit.com/dev/alexflint/arg"
"go.wit.com/gui"
"go.wit.com/lib/protobuf/forgepb"
"go.wit.com/lib/protobuf/gitpb"
"go.wit.com/log"
)
// sent via -ldflags
var VERSION string
var BUILDTIME string
// using this for now. triggers config save
var configSave bool
func getVersion(repo *gitpb.Repo, name string) string {
cmd := []string{"git", "describe", "--tags", "--always", name}
result := repo.RunQuiet(cmd)
output := strings.Join(result.Stdout, "\n")
log.Info("cmd =", cmd, output)
return strings.TrimSpace(output)
}
func main() {
me = new(mainType)
me.pp = arg.MustParse(&argv)
me.urlbase = argv.URL
if me.urlbase == "" {
me.urlbase = "https://go.wit.com/"
}
me.urlbase = strings.Trim(me.urlbase, "/") // track down why trailing '/' makes http POST not work
// load the ~/.config/forge/ config
me.forge = forgepb.Init()
me.found = new(gitpb.Repos)
if argv.User {
me.forge.CheckoutUser()
okExit("")
}
if argv.Master {
me.forge.CheckoutMaster()
okExit("")
}
if argv.Register != "" {
if err := doRegister(argv.Register); err == nil {
okExit("attempting to register " + argv.Register)
} else {
badExit(err)
}
}
if argv.Delete != "" {
me.forge.DeleteByGoPath(argv.Delete)
me.forge.SetConfigSave(true)
okExit("")
}
if argv.Fix {
okExit("")
}
// first find the repos or gopaths to operate on
if argv.Config {
if findConfig() {
me.forge.ConfigPrintTable()
okExit("")
}
} else {
findRepos()
}
// okExit("")
log.Info("found", me.found.Len(), "repos. found", len(me.foundPaths), "paths from .config/forge")
// now, do something to all of them (or just print out a table of them)
var done bool = false
if argv.Do != nil {
if argv.Do.Dirty {
doCheckDirty()
okExit("")
done = true
}
if argv.Do.Scan {
doScan()
done = true
}
if argv.Do.GitPull {
doGitPull()
done = true
}
if argv.Do.GitReset {
doGitReset()
done = true
}
if argv.Do.List {
// print out the repos
doCobol()
done = true
}
if argv.Do.PatchSet != "" {
sendDevelDiff(argv.Do.PatchSet)
// sendMasterDiff()
okExit("patches")
}
}
if argv.ListPatchSet {
listPatches()
okExit("patches")
}
if configSave {
me.forge.ConfigSave()
configSave = false
}
// if the user doesn't want to open the GUI and
// nothing else was specified to be done,
// then just list the table to stdout
if gui.NoGui() {
if !done {
// if nothing was selected, print out a table of them on STDOUT
doCobol()
okExit("")
}
}
// open the gui
doGui()
okExit("")
}
|