github.com/hashicorp/packer@v1.14.3/builder/file/artifact.go (about) 1 // Copyright (c) HashiCorp, Inc. 2 // SPDX-License-Identifier: BUSL-1.1 3 4 package file 5 6 import ( 7 "fmt" 8 "log" 9 "os" 10 "path" 11 12 registryimage "github.com/hashicorp/packer-plugin-sdk/packer/registry/image" 13 ) 14 15 type FileArtifact struct { 16 source string 17 filename string 18 } 19 20 func (*FileArtifact) BuilderId() string { 21 return BuilderId 22 } 23 24 func (a *FileArtifact) Files() []string { 25 return []string{a.filename} 26 } 27 28 func (a *FileArtifact) Id() string { 29 return "File" 30 } 31 32 func (a *FileArtifact) String() string { 33 return fmt.Sprintf("Stored file: %s", a.filename) 34 } 35 36 func (a *FileArtifact) State(name string) interface{} { 37 if name == registryimage.ArtifactStateURI { 38 img, err := registryimage.FromArtifact(a, 39 registryimage.WithID(path.Base(a.filename)), 40 registryimage.WithRegion(path.Dir(a.filename)), 41 registryimage.WithSourceID(a.source), 42 ) 43 44 if err != nil { 45 log.Printf("[DEBUG] error encountered when creating a registry image %v", err) 46 return nil 47 } 48 49 return img 50 } 51 52 return nil 53 } 54 55 func (a *FileArtifact) Destroy() error { 56 log.Printf("Deleting %s", a.filename) 57 return os.Remove(a.filename) 58 }