(definition ModuleDefinition, destination string, progressBar *visualization.ProgressBar)
| 165 | } |
| 166 | |
| 167 | func (m ModuleManager) download(definition ModuleDefinition, destination string, progressBar *visualization.ProgressBar) error { |
| 168 | out, err := os.Create(destination) |
| 169 | if err != nil { |
| 170 | return fmt.Errorf("Could not download %s: %w", definition.Name, err) |
| 171 | } |
| 172 | defer func() { _ = out.Close() }() |
| 173 | |
| 174 | request := network.NewHttpGetRequest(definition.Url, nil, http.Header{}) |
| 175 | clientSettings := network.NewHttpClientSettings(false, "", map[string]string{}, 0, 1, false) |
| 176 | client := network.NewHttpClient(nil, *clientSettings) |
| 177 | response, err := client.Send(request) |
| 178 | if err != nil { |
| 179 | return fmt.Errorf("Could not download %s: %w", definition.Name, err) |
| 180 | } |
| 181 | defer func() { _ = response.Body.Close() }() |
| 182 | downloadReader := m.progressReader("downloading...", "installing... ", response.Body, response.ContentLength, progressBar) |
| 183 | _, err = io.Copy(out, downloadReader) |
| 184 | if err != nil { |
| 185 | return fmt.Errorf("Could not download %s: %w", definition.Name, err) |
| 186 | } |
| 187 | return nil |
| 188 | } |
| 189 | |
| 190 | func (m ModuleManager) progressReader(text string, completedText string, reader io.Reader, length int64, progressBar *visualization.ProgressBar) io.Reader { |
| 191 | return visualization.NewProgressReader(reader, func(progress visualization.Progress) { |
no test coverage detected