func getLatestVersion()

in internal/cmd/integrations/integrations.go [90:128]


func getLatestVersion(name string) (version string, err error) {
	var listBody []byte

	apiclient.DisableCmdPrintHttpResponse()
	defer apiclient.EnableCmdPrintHttpResponse()

	// list integration versions, order by state=ACTIVE, page size = 1 and return basic info
	if listBody, err = integrations.ListVersions(name, 1, "", "state=ACTIVE",
		"snapshot_number", false, false, true); err != nil {
		return "", fmt.Errorf("unable to list versions: %v", err)
	}
	if string(listBody) != "{}" {
		if version, err = integrations.GetIntegrationVersion(listBody); err != nil {
			return "", err
		}
	} else {
		// list integration versions, order by state=SNAPSHOT, page size = 1 and return basic info
		if listBody, err = integrations.ListVersions(name, 1, "", "state=SNAPSHOT",
			"snapshot_number", false, false, true); err != nil {
			return "", fmt.Errorf("unable to list versions: %v", err)
		}
		if string(listBody) != "{}" {
			if version, err = integrations.GetIntegrationVersion(listBody); err != nil {
				return "", err
			}
		} else {
			if listBody, err = integrations.ListVersions(name, 1, "", "state=DRAFT",
				"snapshot_number", false, false, true); err != nil {
				return "", fmt.Errorf("unable to list versions: %v", err)
			}
			if string(listBody) != "{}" {
				if version, err = integrations.GetIntegrationVersion(listBody); err != nil {
					return "", err
				}
			}
		}
	}
	return version, nil
}