func (b *buildFile) addContext(container *env.Container, orig, dest string) error { origPath := path.Join(b.context, orig) destPath := path.Join(container.RootfsPath(), dest) // Preserve the trailing '/' if strings.HasSuffix(dest, "/") { destPath = destPath + "/" } fi, err := os.Stat(origPath) if err != nil { return err } if fi.IsDir() { if err := utils.CopyWithTar(origPath, destPath); err != nil { return err } // First try to unpack the source as an archive } else if err := utils.UntarPath(origPath, destPath); err != nil { utils.Debugf("Couldn't untar %s to %s: %s", origPath, destPath, err) // If that fails, just copy it as a regular file if err := os.MkdirAll(path.Dir(destPath), 0755); err != nil { return err } if err := utils.CopyWithTar(origPath, destPath); err != nil { return err } } return nil }