in commands/helpers/artifacts_downloader.go [74:127]
func (c *ArtifactsDownloaderCommand) Execute(cliContext *cli.Context) {
log.SetRunnerFormatter()
wd, err := os.Getwd()
if err != nil {
logrus.Fatalln("Unable to get working directory")
}
if c.URL == "" {
logrus.Warningln("Missing URL (--url)")
}
if c.Token == "" {
logrus.Warningln("Missing runner credentials (--token)")
}
if c.ID <= 0 {
logrus.Warningln("Missing build ID (--id)")
}
if c.ID <= 0 || c.Token == "" || c.URL == "" {
logrus.Fatalln("Incomplete arguments")
}
// Create temporary file
file, err := os.CreateTemp(c.StagingDir, "artifacts")
if err != nil {
logrus.Fatalln(err)
}
_ = file.Close()
defer func() { _ = os.Remove(file.Name()) }()
// Download artifacts file
err = c.doRetry(func(retry int) error {
return c.download(file.Name(), retry)
})
if err != nil {
logrus.Fatalln(err)
}
f, size, format, err := openArchive(file.Name())
if err != nil {
logrus.Fatalln(err)
}
defer f.Close()
extractor, err := archive.NewExtractor(format, f, size, wd)
if err != nil {
logrus.Fatalln(err)
}
// Extract artifacts file
err = extractor.Extract(context.Background())
if err != nil {
logrus.Fatalln(err)
}
}