github.com/hashicorp/packer@v1.14.3/post-processor/artifice/artifact.go (about) 1 // Copyright (c) HashiCorp, Inc. 2 // SPDX-License-Identifier: BUSL-1.1 3 4 package artifice 5 6 import ( 7 "fmt" 8 "os" 9 "path/filepath" 10 "strings" 11 ) 12 13 const BuilderId = "packer.post-processor.artifice" 14 15 type Artifact struct { 16 files []string 17 } 18 19 func NewArtifact(files []string) (*Artifact, error) { 20 artifact := &Artifact{} 21 for _, f := range files { 22 globfiles, err := filepath.Glob(f) 23 if err != nil { 24 return nil, err 25 } 26 for _, gf := range globfiles { 27 if _, err := os.Stat(gf); err != nil { 28 return nil, err 29 } 30 artifact.files = append(artifact.files, gf) 31 } 32 } 33 return artifact, nil 34 } 35 36 func (a *Artifact) BuilderId() string { 37 return BuilderId 38 } 39 40 func (a *Artifact) Files() []string { 41 return a.files 42 } 43 44 func (a *Artifact) Id() string { 45 return "" 46 } 47 48 func (a *Artifact) String() string { 49 files := strings.Join(a.files, ", ") 50 return fmt.Sprintf("Created artifact from files: %s", files) 51 } 52 53 func (a *Artifact) State(name string) interface{} { 54 return nil 55 } 56 57 func (a *Artifact) Destroy() error { 58 for _, f := range a.files { 59 err := os.RemoveAll(f) 60 if err != nil { 61 return err 62 } 63 } 64 return nil 65 }