MCPcopy Create free account
hub / github.com/apache/openwhisk-cli / sdkInstall

Function sdkInstall

commands/sdk.go:154–249  ·  view source on GitHub ↗
(componentName string)

Source from the content-addressed store, hash-verified

152}
153
154func sdkInstall(componentName string) error {
155 targetFile := sdkMap[componentName].FileName
156 if _, err := os.Stat(targetFile); err == nil {
157 whisk.Debug(whisk.DbgError, "os.Stat reports file '%s' exists\n", targetFile)
158 errStr := wski18n.T("The file '{{.name}}' already exists. Delete it and retry.",
159 map[string]interface{}{"name": targetFile})
160 werr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
161 return werr
162 }
163
164 resp, err := Client.Sdks.Install(sdkMap[componentName].UrlPath)
165 if err != nil {
166 whisk.Debug(whisk.DbgError, "Client.Sdks.Install(%s) failed: %s\n", sdkMap[componentName].UrlPath, err)
167 errStr := wski18n.T("Unable to retrieve '{{.urlpath}}' SDK: {{.err}}",
168 map[string]interface{}{"urlpath": sdkMap[componentName].UrlPath, "err": err})
169 werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
170 return werr
171 }
172
173 if resp.Body == nil {
174 whisk.Debug(whisk.DbgError, "SDK Install HTTP response has no body\n")
175 errStr := wski18n.T("Server failed to send the '{{.component}}' SDK: {{.err}}",
176 map[string]interface{}{"name": componentName, "err": err})
177 werr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_NETWORK, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
178 return werr
179 }
180
181 // Create the SDK file
182 sdkfile, err := os.Create(targetFile)
183 if err != nil {
184 whisk.Debug(whisk.DbgError, "os.Create(%s) failure: %s\n", targetFile, err)
185 errStr := wski18n.T("Error creating SDK file '{{.name}}': {{.err}}",
186 map[string]interface{}{"name": targetFile, "err": err})
187 werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
188 return werr
189 }
190
191 // Read the HTTP response body and write it to the SDK file
192 whisk.Debug(whisk.DbgInfo, "Reading SDK file from HTTP response body\n")
193 _, err = io.Copy(sdkfile, resp.Body)
194 if err != nil {
195 whisk.Debug(whisk.DbgError, "io.Copy() of resp.Body into sdkfile failure: %s\n", err)
196 errStr := wski18n.T("Error copying server response into file: {{.err}}",
197 map[string]interface{}{"err": err})
198 werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
199 sdkfile.Close()
200 return werr
201
202 }
203 sdkfile.Close() // Don't use 'defer' since this file might need to be deleted after unpack
204
205 // At this point, the entire file is downloaded from the server
206 // Check if there is any special post-download processing (i.e. unpack)
207 if sdkMap[componentName].Unpack {
208 // Make sure the target directory does not already exist
209 defer os.Remove(targetFile)
210 targetdir := sdkMap[componentName].UnpackDir
211 if _, err = os.Stat(targetdir); err == nil {

Callers 2

dockerInstallFunction · 0.85
iOSInstallFunction · 0.85

Calls 3

unpackGzipFunction · 0.85
unpackTarFunction · 0.85
CreateMethod · 0.80

Tested by

no test coverage detected