github.com/AiRISTAFlowInc/fs-cli@v0.2.6/api/install.go (about) 1 package api 2 3 import ( 4 "encoding/json" 5 "fmt" 6 "io/ioutil" 7 "os" 8 "os/exec" 9 10 "github.com/AiRISTAFlowInc/fs-cli/common" 11 "github.com/AiRISTAFlowInc/fs-cli/util" 12 ) 13 14 func InstallPackage(project common.AppProject, pkg string) error { 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 err := project.DepManager().InstallReplacedPkg(pkg, replacedPath) 63 if err != nil { 64 return err 65 } 66 return InstallPackage(project, pkg+"@v0.0.0") 67 } 68 69 func InstallContribBundle(project common.AppProject, path string) error { 70 file, err := ioutil.ReadFile(path) 71 if err != nil { 72 return err 73 } 74 75 var contribBundleDescriptor util.FlogoContribBundleDescriptor 76 77 err = json.Unmarshal(file, &contribBundleDescriptor) 78 if err != nil { 79 return err 80 } 81 82 for _, contrib := range contribBundleDescriptor.Contribs { 83 err := InstallPackage(project, contrib) 84 if err != nil { 85 fmt.Fprintf(os.Stderr, "Error installing contrib '%s': %s", contrib, err.Error()) 86 } 87 } 88 89 err = util.ExecCmd(exec.Command("go", "mod", "tidy"), project.SrcDir()) 90 if err != nil { 91 fmt.Println("[err]", err) 92 } 93 94 return nil 95 }