Check if local exports exist (#197)

Check if local exports exist during diffing. For tar, the file must
exist. For local, the directory must exist and be populated.

Fixes https://github.com/pulumi/pulumi-docker-build/issues/177.
This commit is contained in:
Bryce Lampe
2024-08-13 13:52:10 -07:00
committed by GitHub
parent 81a7aa4ec4
commit d9c3284f40
4 changed files with 66 additions and 0 deletions

View File

@@ -17,6 +17,7 @@ package internal
import (
"errors"
"fmt"
"os"
"slices"
"strings"
@@ -353,6 +354,19 @@ func (e *ExportLocal) Annotate(a infer.Annotator) {
a.Describe(&e.Dest, "Output path.")
}
// Exists returns true if the exported directory exists and is populated with
// some files.
func (e *ExportLocal) Exists() bool {
if e == nil {
return true // Degenerate case.
}
files, err := os.ReadDir(e.Dest)
if err != nil {
return false
}
return len(files) > 0
}
// ExportTar is an export that uses the tar format for exporting.
type ExportTar struct {
ExportLocal
@@ -365,6 +379,15 @@ func (e *ExportTar) String() string {
return "type=tar,dest=" + e.Dest
}
// Exists returns true if a file exists at the expected path.
func (e *ExportTar) Exists() bool {
if e == nil {
return true // Degenerate case.
}
_, err := os.Stat(e.Dest)
return err == nil
}
// ExportWithOCI is an export that support OCI media types.
type ExportWithOCI struct {
OCI *bool `pulumi:"ociMediaTypes,optional"`