Skip to content

Commit

Permalink
host builder nonregular files
Browse files Browse the repository at this point in the history
  • Loading branch information
lkingland committed Feb 12, 2024
1 parent c252c4f commit a9687cf
Showing 1 changed file with 29 additions and 11 deletions.
40 changes: 29 additions & 11 deletions pkg/oci/containerize.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import (
"fmt"
"io"
"os"
slashpath "path"
"path/filepath"
"strings"

Expand Down Expand Up @@ -136,6 +135,8 @@ func newDataTarball(source, target string, ignored []string, verbose bool) error
tw := tar.NewWriter(gw)
defer tw.Close()

baseDir := "/func"

return filepath.Walk(source, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
Expand All @@ -150,27 +151,44 @@ func newDataTarball(source, target string, ignored []string, verbose bool) error
}
}

header, err := tar.FileInfoHeader(info, info.Name())
if err != nil {
return err
// header, err := tar.FileInfoHeader(info, info.Name())
// if err != nil {
// return err
// }

// relPath, err := filepath.Rel(source, path)
// if err != nil {
// return err
// }

// header.Name = slashpath.Join(baseDir, filepath.ToSlash(relPath))
// if err := tw.WriteHeader(header); err != nil {
// return err
// }

var link string
if info.Mode()&os.ModeSymlink == os.ModeSymlink {
if link, err = os.Readlink(path); err != nil {
return err
}
}

relPath, err := filepath.Rel(source, path)
header, err := tar.FileInfoHeader(info, link)
if err != nil {
return err
}

header.Name = slashpath.Join("/func", filepath.ToSlash(relPath))
// TODO: should we set file timestamps to the build start time of cfg.t?
// header.ModTime = timestampArgument

if err := tw.WriteHeader(header); err != nil {
header.Name = filepath.Join(baseDir, strings.TrimPrefix(path, source))
if err = tw.WriteHeader(header); err != nil {
return err
}
if verbose {
fmt.Printf("→ %v \n", header.Name)
}
if info.IsDir() {
// if info.IsDir() {
// return nil
// }
if !info.Mode().IsRegular() { //nothing more to do for non-regular
return nil
}

Expand Down

0 comments on commit a9687cf

Please sign in to comment.