func createTarball()

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
}