github.com/r2d2-ai/cli@v1.20.0/api/install.go (about) 1 package api 2 3 import ( 4 "encoding/json" 5 "fmt" 6 "io/ioutil" 7 "os" 8 9 "github.com/r2d2-ai/cli/common" 10 "github.com/r2d2-ai/cli/util" 11 ) 12 13 func InstallPackage(project common.AppProject, pkg string) error { 14 15 flogoImport, err := util.ParseImport(pkg) 16 if err != nil { 17 return err 18 } 19 20 err = project.AddImports(false, true, flogoImport) 21 if err != nil { 22 return err 23 } 24 25 path, err := project.GetPath(flogoImport) 26 if Verbose() { 27 fmt.Println("Installed path", path) 28 } 29 if err != nil { 30 return err 31 } 32 33 legacySupportRequired := false 34 desc, err := util.GetContribDescriptor(path) 35 if desc != nil { 36 cType := desc.GetContribType() 37 if desc.IsLegacy { 38 legacySupportRequired = true 39 cType = "legacy " + desc.GetContribType() 40 err := CreateLegacyMetadata(path, desc.GetContribType(), pkg) 41 if err != nil { 42 return err 43 } 44 } 45 46 fmt.Printf("Installed %s: %s\n", cType, flogoImport) 47 //instStr := fmt.Sprintf("Installed %s:", cType) 48 //fmt.Printf("%-20s %s\n", instStr, imp) 49 } 50 51 if legacySupportRequired { 52 err := InstallLegacySupport(project) 53 if err != nil { 54 return err 55 } 56 } 57 58 return nil 59 } 60 61 func InstallReplacedPackage(project common.AppProject, replacedPath string, pkg string) error { 62 63 err := project.DepManager().InstallReplacedPkg(pkg, replacedPath) 64 if err != nil { 65 return err 66 } 67 return InstallPackage(project, pkg+"@v0.0.0") 68 } 69 70 func InstallContribBundle(project common.AppProject, path string) error { 71 72 file, err := ioutil.ReadFile(path) 73 if err != nil { 74 return err 75 } 76 77 var contribBundleDescriptor util.FlogoContribBundleDescriptor 78 79 err = json.Unmarshal(file, &contribBundleDescriptor) 80 if err != nil { 81 return err 82 } 83 84 for _, contrib := range contribBundleDescriptor.Contribs { 85 err := InstallPackage(project, contrib) 86 if err != nil { 87 fmt.Fprintf(os.Stderr, "Error installing contrib '%s': %s", contrib, err.Error()) 88 } 89 } 90 91 return nil 92 }