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  }