+// GetSDKInfo Used get-sdk-info script to extract SDK get info from a SDK file/tarball
+func GetSDKInfo(scriptDir, url, filename, md5sum string, log *logrus.Logger) (xsapiv1.SDK, error) {
+ sdk := xsapiv1.SDK{}
+
+ args := []string{}
+ if url != "" {
+ args = append(args, "--url", url)
+ } else if filename != "" {
+ args = append(args, "--file", filename)
+ if md5sum != "" {
+ args = append(args, "--md5", md5sum)
+ }
+ } else {
+ return sdk, fmt.Errorf("url of filename must be set")
+ }
+
+ cmd := exec.Command(path.Join(scriptDir, scriptGetSdkInfo), args...)
+ stdout, err := cmd.CombinedOutput()
+ if err != nil {
+ return sdk, fmt.Errorf("%v %v", string(stdout), err)
+ }
+
+ if err = json.Unmarshal(stdout, &sdk); err != nil {
+ log.Errorf("SDK %s script output:\n%v\n", scriptGetSdkInfo, string(stdout))
+ return sdk, fmt.Errorf("Cannot decode sdk info %v", err)
+ }
+ return sdk, nil
+}
+
+// NewCrossSDK creates a new instance of CrossSDK