8
8
"os/user"
9
9
"path/filepath"
10
10
"runtime"
11
+ "strings"
11
12
12
13
"github.com/arduino/arduino-create-agent/gen/tools"
13
14
"github.com/codeclysm/extract"
@@ -110,7 +111,7 @@ func (c *Tools) Install(ctx context.Context, payload *tools.ToolPayload) error {
110
111
for _ , tool := range packager .Tools {
111
112
if tool .Name == payload .Name &&
112
113
tool .Version == payload .Version {
113
- return c .install (ctx , tool )
114
+ return c .install (ctx , payload . Packager , tool )
114
115
}
115
116
}
116
117
}
@@ -121,7 +122,7 @@ func (c *Tools) Install(ctx context.Context, payload *tools.ToolPayload) error {
121
122
payload .Packager , payload .Name , payload .Version ))
122
123
}
123
124
124
- func (c * Tools ) install (ctx context.Context , tool Tool ) error {
125
+ func (c * Tools ) install (ctx context.Context , packager string , tool Tool ) error {
125
126
i := findSystem (tool )
126
127
127
128
// Download
@@ -132,7 +133,7 @@ func (c *Tools) install(ctx context.Context, tool Tool) error {
132
133
}
133
134
defer res .Body .Close ()
134
135
135
- err = extract .Archive (ctx , res .Body , c .Folder , nil )
136
+ err = extract .Archive (ctx , res .Body , c .Folder , rename ( packager , tool . Name , tool . Version ) )
136
137
if err != nil {
137
138
return err
138
139
}
@@ -144,6 +145,17 @@ func (c *Tools) Remove(ctx context.Context, payload *tools.ToolPayload) error {
144
145
return nil
145
146
}
146
147
148
+ func rename (packager , name , version string ) extract.Renamer {
149
+ base := filepath .Join (packager , name , version )
150
+ return func (path string ) string {
151
+ parts := strings .Split (path , string (filepath .Separator ))
152
+ path = strings .Join (parts [1 :], string (filepath .Separator ))
153
+ path = filepath .Join (base , path )
154
+ fmt .Println ("path" , path )
155
+ return path
156
+ }
157
+ }
158
+
147
159
func findSystem (tool Tool ) int {
148
160
var systems = map [string ]string {
149
161
"linuxamd64" : "x86_64-linux-gnu" ,
0 commit comments