oc-deploy/src/utils/download.go

73 lines
1.4 KiB
Go
Raw Normal View History

2024-09-02 09:09:46 +02:00
package utils
import (
// "fmt"
"os"
"io"
"path"
"net/http"
"archive/tar"
"compress/gzip"
)
func DownloadFromUrl(dest string, url string, chmod os.FileMode) error {
resp, err := http.Get(url)
if err != nil {
return err
}
defer resp.Body.Close()
out, err := os.Create(dest)
defer out.Close()
if err != nil {
return err
}
_, err = io.Copy(out, resp.Body)
if err != nil {
return err
}
os.Chmod(dest, chmod)
return nil
}
func ExtractTarGz(dest string, gzipStream io.Reader) error {
uncompressedStream, err := gzip.NewReader(gzipStream)
if err != nil {
return err
}
tarReader := tar.NewReader(uncompressedStream)
for true {
header, err := tarReader.Next()
if err == io.EOF {
break
}
switch header.Typeflag {
case tar.TypeDir:
// if err := os.Mkdir(dest + "/" + header.Name, 0755); err != nil {
// return err
// }
case tar.TypeReg:
outName := dest + "/" + path.Base( header.Name)
outFile, _ := os.Create(outName)
if err != nil {
return err
}
if _, err := io.Copy(outFile, tarReader); err != nil {
return err
}
outFile.Close()
}
}
return nil
}