@@ -34,7 +34,7 @@ var aliases = map[string][]string{
3434}
3535
3636func 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+
158167func 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