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  }