github.com/criteo/command-launcher@v0.0.0-20230407142452-fb616f546e98/internal/pkg/folder-package.go (about)

     1  package pkg
     2  
     3  import (
     4  	"os"
     5  	"path/filepath"
     6  
     7  	"github.com/criteo/command-launcher/internal/command"
     8  	"github.com/criteo/command-launcher/internal/config"
     9  	"github.com/spf13/viper"
    10  )
    11  
    12  type folderPackage struct {
    13  	defaultPackage
    14  	sourceDir string
    15  }
    16  
    17  func CreateFolderPackage(folder string) (command.Package, error) {
    18  	manifestFile, err := os.Open(filepath.Join(folder, "manifest.mf"))
    19  	if err != nil {
    20  		return nil, err
    21  	}
    22  
    23  	manifest, err := ReadManifest(manifestFile)
    24  	if err != nil {
    25  		return nil, err
    26  	}
    27  
    28  	pkg := folderPackage{
    29  		defaultPackage: defaultPackage{
    30  			Manifest: manifest,
    31  		},
    32  		sourceDir: folder,
    33  	}
    34  
    35  	return &pkg, nil
    36  }
    37  
    38  func (pkg *folderPackage) InstallTo(targetDir string) (command.PackageManifest, error) {
    39  	dstDir := filepath.Join(targetDir, pkg.Manifest.Name())
    40  	if err := copyFolder(pkg.sourceDir, dstDir); err != nil {
    41  		return nil, err
    42  	}
    43  
    44  	if viper.GetBool(config.ENABLE_PACKAGE_SETUP_HOOK_KEY) {
    45  		// for now ignore the setup error
    46  		pkg.RunSetup(dstDir)
    47  	}
    48  
    49  	return pkg.Manifest, nil
    50  }
    51  
    52  func (pkg *folderPackage) VerifyChecksum(checksum string) (bool, error) {
    53  	// TODO: what is the checksum for a folder package?
    54  	return true, nil
    55  }
    56  
    57  func (pkg *folderPackage) VerifySignature(signature string) (bool, error) {
    58  	// TODO: what is the signature for a folder package?
    59  	return true, nil
    60  }