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 }