Skip to content

Commit 9b2d953

Browse files
committed
Implementation of deps install in 'lib install' command
1 parent f29e7ad commit 9b2d953

File tree

1 file changed

+28
-3
lines changed

1 file changed

+28
-3
lines changed

Diff for: cli/lib/install.go

+28-3
Original file line numberDiff line numberDiff line change
@@ -47,17 +47,42 @@ func initInstallCommand() *cobra.Command {
4747

4848
func runInstallCommand(cmd *cobra.Command, args []string) {
4949
instance := instance.CreateInstaceIgnorePlatformIndexErrors()
50-
refs, err := globals.ParseLibraryReferenceArgs(args)
50+
libRefs, err := globals.ParseLibraryReferenceArgs(args)
5151
if err != nil {
5252
feedback.Errorf("Arguments error: %v", err)
5353
os.Exit(errorcodes.ErrBadArgument)
5454
}
5555

56-
for _, library := range refs {
56+
toInstall := map[string]*rpc.LibraryDependencyStatus{}
57+
for _, libRef := range libRefs {
58+
depsResp, err := lib.LibraryResolveDependencies(context.Background(), &rpc.LibraryResolveDependenciesReq{
59+
Instance: instance,
60+
Name: libRef.Name,
61+
Version: libRef.Version,
62+
})
63+
if err != nil {
64+
feedback.Errorf("Error resolving dependencies for %s: %s", libRef, err)
65+
}
66+
for _, dep := range depsResp.GetDependencies() {
67+
feedback.Printf("%s depends on %s@%s", libRef, dep.GetName(), dep.GetVersionRequired())
68+
if existingDep, has := toInstall[dep.GetName()]; has {
69+
if existingDep.GetVersionRequired() != dep.GetVersionRequired() {
70+
// TODO: make a better error
71+
feedback.Errorf("The library %s is required in two different versions: %s and %s",
72+
dep.GetName(), dep.GetVersionRequired(), existingDep.GetVersionRequired())
73+
os.Exit(errorcodes.ErrGeneric)
74+
}
75+
}
76+
toInstall[dep.GetName()] = dep
77+
}
78+
feedback.Print()
79+
}
80+
81+
for _, library := range toInstall {
5782
libraryInstallReq := &rpc.LibraryInstallReq{
5883
Instance: instance,
5984
Name: library.Name,
60-
Version: library.Version,
85+
Version: library.VersionRequired,
6186
}
6287
err := lib.LibraryInstall(context.Background(), libraryInstallReq, output.ProgressBar(),
6388
output.TaskProgress(), globals.NewHTTPClientHeader())

0 commit comments

Comments
 (0)