Skip to content

Commit a81df27

Browse files
committed
extract functions
1 parent 0afbcf1 commit a81df27

File tree

1 file changed

+76
-67
lines changed

1 file changed

+76
-67
lines changed

main.go

Lines changed: 76 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ var aliases = map[string][]string{
3434
}
3535

3636
func main() {
37-
log.Printf("toolbox %s", version.Version)
37+
log.Printf("🧰 toolbox %s", version.Version)
3838

3939
tb, err := readToolbox()
4040
if err != nil {
@@ -73,72 +73,13 @@ func main() {
7373
defer func() { _ = os.RemoveAll(tmp) }()
7474

7575
client := resty.New()
76-
77-
for _, tool := range tb.GetTools() {
78-
log.Printf("Download %s\n", tool.Name)
79-
var ghr *types.GithubRelease
80-
if tool.Github != "" {
81-
ghr = &types.GithubRelease{}
82-
83-
ghc := client.R().
84-
SetResult(ghr).
85-
SetHeader("Accept", "application/json")
86-
if t, ok := os.LookupEnv("GITHUB_TOKEN"); ok {
87-
ghc = ghc.SetAuthToken(t)
88-
}
89-
_, err := ghc.
90-
Get(tool.LatestURL())
91-
if err != nil {
92-
panic(err)
93-
}
94-
95-
if tool.Version == "" {
96-
tool.Version = ghr.TagName
97-
log.Printf("Latest Version: %s", tool.Version)
98-
}
99-
}
100-
101-
if tool.Version == ver[tool.Name] {
102-
log.Printf("Skipping since already latest version\n")
103-
continue
76+
tools := tb.GetTools()
77+
for i := range tools {
78+
tool := tools[i]
79+
if err := handleTool(client, ver, tmp, tb, tool); err != nil {
80+
panic(err)
10481
}
10582

106-
if tool.DownloadURL != "" {
107-
if strings.HasPrefix(tool.Version, "http") {
108-
resp, err := client.R().
109-
EnableTrace().
110-
Get(tool.Version)
111-
if err != nil {
112-
panic(err)
113-
}
114-
tool.Version = string(resp.Body())
115-
log.Printf("Latest Version: %s", tool.Version)
116-
}
117-
118-
if tool.Version == ver[tool.Name] {
119-
log.Printf("Skipping since already latest version\n")
120-
continue
121-
}
122-
if err := fetchTool(tmp, tool.Name, tool.Name, parseTemplate(tool.DownloadURL, tool.Version), tb.Target); err != nil {
123-
panic(err)
124-
}
125-
} else if ghr != nil {
126-
matching := findMatching(tool.Name, ghr.Assets)
127-
if matching != nil {
128-
if err := fetchTool(tmp, tool.Name, tool.Name, matching.BrowserDownloadURL, tb.Target); err != nil {
129-
panic(err)
130-
}
131-
}
132-
for _, add := range tool.Additional {
133-
matching := findMatching(add, ghr.Assets)
134-
if matching != nil {
135-
if err := fetchTool(tmp, add, add, matching.BrowserDownloadURL, tb.Target); err != nil {
136-
panic(err)
137-
}
138-
}
139-
}
140-
}
141-
println()
14283
}
14384

14485
// save versions
@@ -155,6 +96,74 @@ func main() {
15596
}
15697
}
15798

99+
func handleTool(client *resty.Client, ver map[string]string, tmp string, tb *types.Toolbox, tool *types.Tool) error {
100+
log.Printf("Processing %s\n", tool.Name)
101+
defer func() { println() }()
102+
var ghr *types.GithubRelease
103+
if tool.Github != "" {
104+
ghr = &types.GithubRelease{}
105+
106+
ghc := client.R().
107+
SetResult(ghr).
108+
SetHeader("Accept", "application/json")
109+
if t, ok := os.LookupEnv("GITHUB_TOKEN"); ok {
110+
ghc = ghc.SetAuthToken(t)
111+
}
112+
_, err := ghc.
113+
Get(tool.LatestURL())
114+
if err != nil {
115+
return err
116+
}
117+
118+
if tool.Version == "" {
119+
tool.Version = ghr.TagName
120+
log.Printf("Latest Version: %s", tool.Version)
121+
}
122+
}
123+
124+
if tool.Version == ver[tool.Name] {
125+
log.Printf("✔ Skipping since already latest version\n")
126+
return nil
127+
}
128+
129+
if tool.DownloadURL != "" {
130+
if strings.HasPrefix(tool.Version, "http") {
131+
resp, err := client.R().
132+
EnableTrace().
133+
Get(tool.Version)
134+
if err != nil {
135+
return nil
136+
}
137+
tool.Version = string(resp.Body())
138+
log.Printf("Latest Version: %s", tool.Version)
139+
}
140+
141+
if tool.Version == ver[tool.Name] {
142+
log.Printf("✔ Skipping since already latest version\n")
143+
return nil
144+
}
145+
if err := fetchTool(tmp, tool.Name, tool.Name, parseTemplate(tool.DownloadURL, tool.Version), tb.Target); err != nil {
146+
return err
147+
}
148+
} else if ghr != nil {
149+
matching := findMatching(tool.Name, ghr.Assets)
150+
if matching != nil {
151+
if err := fetchTool(tmp, tool.Name, tool.Name, matching.BrowserDownloadURL, tb.Target); err != nil {
152+
return err
153+
}
154+
}
155+
for _, add := range tool.Additional {
156+
matching := findMatching(add, ghr.Assets)
157+
if matching != nil {
158+
if err := fetchTool(tmp, add, add, matching.BrowserDownloadURL, tb.Target); err != nil {
159+
return err
160+
}
161+
}
162+
}
163+
}
164+
return nil
165+
}
166+
158167
func findMatching(toolName string, assets []types.Asset) *types.Asset {
159168
var matching []*types.Asset
160169
for i := range assets {
@@ -212,7 +221,7 @@ func fetchTool(tmp string, remoteToolName string, trueToolName string, url strin
212221
paths := strings.Split(url, "/")
213222
fileName := paths[len(paths)-1]
214223
path := fmt.Sprintf("%s/%s", dir, fileName)
215-
log.Printf("Downloading %s", url)
224+
log.Printf("📥 Downloading %s", url)
216225
if err := downloadFile(path, url); err != nil {
217226
return err
218227
}
@@ -290,7 +299,7 @@ func readToolbox() (*types.Toolbox, error) {
290299
tbFile = homePath
291300
}
292301
}
293-
log.Printf("Reading config %s\n", tbFile)
302+
log.Printf("📒 Reading config %s\n", tbFile)
294303
b, err := os.ReadFile(tbFile)
295304
if err != nil {
296305
return nil, err

0 commit comments

Comments
 (0)