@@ -41,65 +41,81 @@ func initInstallCommand() *cobra.Command {
41
41
Run : runInstallCommand ,
42
42
}
43
43
installCommand .Flags ().BoolVar (& installFlags .noDeps , "no-deps" , false , "Do not install dependencies." )
44
+ installCommand .Flags ().StringVarP (& installFlags .gitURL , "git-url" , "g" , "" , "Enter git url for libraries hosted on repositories" )
45
+ installCommand .Flags ().StringVarP (& installFlags .zipPath , "zip-path" , "z" , "" , "Enter a path to zip file" )
44
46
return installCommand
45
47
}
46
48
47
49
var installFlags struct {
48
- noDeps bool
50
+ noDeps bool
51
+ gitURL string
52
+ zipPath string
49
53
}
50
54
51
55
func runInstallCommand (cmd * cobra.Command , args []string ) {
52
56
instance := instance .CreateInstanceIgnorePlatformIndexErrors ()
53
- libRefs , err := ParseLibraryReferenceArgsAndAdjustCase (instance , args )
54
- if err != nil {
55
- feedback .Errorf ("Arguments error: %v" , err )
56
- os .Exit (errorcodes .ErrBadArgument )
57
- }
58
-
59
- toInstall := map [string ]* rpc.LibraryDependencyStatus {}
60
- if installFlags .noDeps {
61
- for _ , libRef := range libRefs {
62
- toInstall [libRef .Name ] = & rpc.LibraryDependencyStatus {
63
- Name : libRef .Name ,
64
- VersionRequired : libRef .Version ,
65
- }
57
+ if installFlags .zipPath != "" {
58
+ ZiplibraryInstallReq := & rpc.ZipLibraryInstallReq {
59
+ Instance : instance ,
60
+ Path : installFlags .zipPath ,
66
61
}
67
- } else {
68
- for _ , libRef := range libRefs {
69
- depsResp , err := lib .LibraryResolveDependencies (context .Background (), & rpc.LibraryResolveDependenciesReq {
70
- Instance : instance ,
71
- Name : libRef .Name ,
72
- Version : libRef .Version ,
73
- })
74
- if err != nil {
75
- feedback .Errorf ("Error resolving dependencies for %s: %s" , libRef , err )
62
+ _ , err := lib .ZipLibraryInstall (context .Background (), ZiplibraryInstallReq )
63
+ if err != nil {
64
+ feedback .Errorf ("Error installing Zip Library %v" , err )
65
+ os .Exit (errorcodes .ErrGeneric )
66
+ }
67
+ }else {
68
+ libRefs , err := ParseLibraryReferenceArgsAndAdjustCase (instance , args )
69
+ if err != nil {
70
+ feedback .Errorf ("Arguments error: %v" , err )
71
+ os .Exit (errorcodes .ErrBadArgument )
72
+ }
73
+
74
+ toInstall := map [string ]* rpc.LibraryDependencyStatus {}
75
+ if installFlags .noDeps {
76
+ for _ , libRef := range libRefs {
77
+ toInstall [libRef .Name ] = & rpc.LibraryDependencyStatus {
78
+ Name : libRef .Name ,
79
+ VersionRequired : libRef .Version ,
80
+ }
76
81
}
77
- for _ , dep := range depsResp .GetDependencies () {
78
- feedback .Printf ("%s depends on %s@%s" , libRef , dep .GetName (), dep .GetVersionRequired ())
79
- if existingDep , has := toInstall [dep .GetName ()]; has {
80
- if existingDep .GetVersionRequired () != dep .GetVersionRequired () {
81
- // TODO: make a better error
82
- feedback .Errorf ("The library %s is required in two different versions: %s and %s" ,
83
- dep .GetName (), dep .GetVersionRequired (), existingDep .GetVersionRequired ())
84
- os .Exit (errorcodes .ErrGeneric )
82
+ } else {
83
+ for _ , libRef := range libRefs {
84
+ depsResp , err := lib .LibraryResolveDependencies (context .Background (), & rpc.LibraryResolveDependenciesReq {
85
+ Instance : instance ,
86
+ Name : libRef .Name ,
87
+ Version : libRef .Version ,
88
+ })
89
+ if err != nil {
90
+ feedback .Errorf ("Error resolving dependencies for %s: %s" , libRef , err )
91
+ }
92
+ for _ , dep := range depsResp .GetDependencies () {
93
+ feedback .Printf ("%s depends on %s@%s" , libRef , dep .GetName (), dep .GetVersionRequired ())
94
+ if existingDep , has := toInstall [dep .GetName ()]; has {
95
+ if existingDep .GetVersionRequired () != dep .GetVersionRequired () {
96
+ // TODO: make a better error
97
+ feedback .Errorf ("The library %s is required in two different versions: %s and %s" ,
98
+ dep .GetName (), dep .GetVersionRequired (), existingDep .GetVersionRequired ())
99
+ os .Exit (errorcodes .ErrGeneric )
100
+ }
85
101
}
102
+ toInstall [dep .GetName ()] = dep
86
103
}
87
- toInstall [dep .GetName ()] = dep
88
104
}
89
105
}
90
- }
91
106
92
- for _ , library := range toInstall {
93
- libraryInstallReq := & rpc.LibraryInstallReq {
94
- Instance : instance ,
95
- Name : library .Name ,
96
- Version : library .VersionRequired ,
97
- }
98
- err := lib .LibraryInstall (context .Background (), libraryInstallReq , output .ProgressBar (),
99
- output .TaskProgress (), globals .NewHTTPClientHeader ())
100
- if err != nil {
101
- feedback .Errorf ("Error installing %s: %v" , library , err )
102
- os .Exit (errorcodes .ErrGeneric )
107
+ for _ , library := range toInstall {
108
+ libraryInstallReq := & rpc.LibraryInstallReq {
109
+ Instance : instance ,
110
+ Name : library .Name ,
111
+ Version : library .VersionRequired ,
112
+ }
113
+ err := lib .LibraryInstall (context .Background (), libraryInstallReq , output .ProgressBar (),
114
+ output .TaskProgress (), globals .NewHTTPClientHeader ())
115
+ if err != nil {
116
+ feedback .Errorf ("Error installing %s: %v" , library , err )
117
+ os .Exit (errorcodes .ErrGeneric )
118
+ }
103
119
}
104
120
}
105
121
}
0 commit comments