func GetSecret()

in cmd/hub/api/secret.go [128:210]


func GetSecret(entityKind, selector, uuid string, jsonFormat bool) {
	if config.Debug {
		log.Printf("Getting %s/%s secret `%s`", entityKind, selector, uuid)
	}

	id := ""
	resource := ""
	var qErr error

	switch entityKind {
	case "cloudaccount":
		cloudAccount, err := cloudAccountBy(selector)
		qErr = err
		if err == nil && cloudAccount != nil {
			id = cloudAccount.Id
		}
		resource = cloudAccountsResource
	case "environment":
		env, err := environmentBy(selector)
		qErr = err
		if err == nil && env != nil {
			id = env.Id
		}
		resource = environmentsResource
	case "template":
		template, err := templateBy(selector)
		qErr = err
		if err == nil && template != nil {
			id = template.Id
		}
		resource = templatesResource
	case "instance":
		instance, err := stackInstanceBy(selector)
		qErr = err
		if err == nil && instance != nil {
			id = instance.Id
		}
		resource = stackInstancesResource
	case "application":
		application, err := applicationBy(selector)
		qErr = err
		if err == nil && application != nil {
			id = application.Id
		}
		resource = applicationsResource
	default:
		log.Fatalf("Unknown entity kind `%s`", entityKind)
	}
	if id == "" && qErr == nil {
		qErr = errors.New("Not Found")
	}
	if qErr != nil {
		msg := fmt.Sprintf("Unable to query %s %s: %v", entityKind, selector, qErr)
		if config.Force && util.IsUint(selector) {
			util.Warn("%s", msg)
			id = selector
		} else {
			log.Fatal(msg)
		}
	}

	resource = fmt.Sprintf("%s/%s", resource, id)

	resp, err := secret(resource, uuid)
	if err != nil {
		log.Fatalf("Unable to get secret: %v", err)
	}

	if jsonFormat {
		out, err := json.MarshalIndent(resp, "", "  ")
		if err != nil {
			log.Fatalf("Error marshalling JSON response for output: %v", err)
		}
		os.Stdout.Write(out)
		os.Stdout.Write([]byte("\n"))
	} else {
		str, kind := formatSecret(resp)
		if config.Debug {
			log.Printf("Secret kind: %s", kind)
		}
		fmt.Println(str)
	}
}