in projects/aws/image-builder/builder/utils.go [454:503]
func createTarball(fileName, path string) error {
// Create a new tarball.
tarball, err := os.Create(fileName)
if err != nil {
panic(err)
}
defer tarball.Close()
// Create a tar writer.
tw := tar.NewWriter(tarball)
filepath.Walk(path, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
if info.IsDir() {
return nil
}
// Create a new tar header.
header, err := tar.FileInfoHeader(info, path)
if err != nil {
return err
}
// Write the header to the tar writer.
if err := tw.WriteHeader(header); err != nil {
return err
}
// Copy the file contents to the tar writer.
file, err := os.Open(path)
if err != nil {
return err
}
defer file.Close()
_, err = io.Copy(tw, file)
if err != nil {
return err
}
return nil
})
// Close the tar writer.
err = tw.Close()
if err != nil {
panic(err)
}
return nil
}