func formatEnvironmentEntity()

in cmd/hub/api/environment.go [73:212]


func formatEnvironmentEntity(env *Environment, showSecrets, showMyTeams,
	showServiceAccount, showServiceAccountLoginToken, getCloudCredentials, showBackups bool, errors []error) []error {

	title := fmt.Sprintf("%s [%s]", env.Name, env.Id)
	if env.Description != "" {
		title = fmt.Sprintf("%s - %s", title, env.Description)
	}
	fmt.Printf("\n\t%s\n", title)
	if len(env.Tags) > 0 {
		fmt.Printf("\t\tTags: %s\n", strings.Join(env.Tags, ", "))
	}
	var dnsDomains []string
	if env.CloudAccount != "" {
		account, err := cloudAccountById(env.CloudAccount, false)
		if err != nil {
			errors = append(errors, err)
		} else {
			fmt.Printf("\t\tCloud Account: %s\n", formatCloudAccountTitle(account))
			dnsDomains = append(dnsDomains, account.BaseDomain)
		}
		if getCloudCredentials && account != nil {
			keys, err := cloudAccountCredentials(account.Id, account.Kind)
			if err != nil {
				errors = append(errors, err)
			} else {
				formatted, err := formatCloudAccountCredentials(keys)
				if err != nil {
					errors = append(errors, err)
				} else {
					fmt.Printf("\t\tSecurity Credentials: %s\n", formatted)
				}
			}
		}
	}
	if len(env.Providers) > 0 {
		var kubes []string
		for _, provider := range env.Providers {
			if provider.Kind == "kubernetes" && provider.Name != "" {
				kubes = append(kubes, provider.Name)
			}
		}
		for _, provider := range env.Providers {
			if provider.Kind == "dns-domain" {
				for _, p := range provider.Parameters {
					if p.Name == "dns.baseDomain" {
						if domain, ok := p.Value.(string); ok {
							faulty := ""
							if !util.Contains(kubes, domain) {
								faulty = " (no cluster)"
							}
							dnsDomains = append(dnsDomains, domain+faulty)
						}
					}
				}
			}
		}
	}
	if len(dnsDomains) > 0 {
		fmt.Printf("\t\tDomains: %s\n", strings.Join(dnsDomains, ", "))
	}
	resource := fmt.Sprintf("%s/%s", environmentsResource, env.Id)
	if len(env.Parameters) > 0 {
		fmt.Print("\t\tParameters:\n")
		for _, param := range sortParameters(env.Parameters) {
			formatted, err := formatParameter(resource, param, showSecrets)
			fmt.Printf("\t\t%s\n", formatted)
			if err != nil {
				errors = append(errors, err)
			}
		}
	}
	if len(env.Providers) > 0 {
		fmt.Print("\t\tProviders:\n")
		for i, provider := range env.Providers {
			fmt.Printf("\t\t    %02d  %s [%s]\n", i, provider.Name, provider.Kind)
			provides := "(none)"
			if len(provider.Provides) > 0 {
				provides = strings.Join(provider.Provides, ", ")
			}
			fmt.Printf("\t\t\tProvides: %s\n", provides)
			if len(provider.Parameters) > 0 {
				fmt.Print("\t\t\tParameters:\n")
				for _, param := range sortParameters(provider.Parameters) {
					formatted, err := formatParameter(resource, param, showSecrets)
					fmt.Printf("\t\t\t%s\n", formatted)
					if err != nil {
						errors = append(errors, err)
					}
				}
			}
		}
	}
	if len(env.TeamsPermissions) > 0 {
		formatted := formatTeams(env.TeamsPermissions)
		fmt.Printf("\t\tTeams: %s\n", formatted)
		if showMyTeams {
			teams, err := myTeams(env.Id)
			formatted := formatTeams(teams)
			fmt.Printf("\t\tMy Teams: %s\n", formatted)
			if err != nil {
				errors = append(errors, err)
			}
		}
	}
	if showServiceAccount {
		teams, err := myTeams(env.Id)
		if err != nil {
			errors = append(errors, err)
		} else {
			if len(teams) > 0 {
				for _, team := range teams {
					account, err := serviceAccount(env.Id, team.Id)
					if err != nil {
						errors = append(errors, err)
					} else {
						formatted := formatServiceAccount(team, account, showServiceAccountLoginToken)
						fmt.Printf("\t\tService Account: %s\n", formatted)
					}
				}
			}
		}
	}
	if showBackups {
		backups, err := backupsByEnvironmentId(env.Id)
		if err != nil {
			errors = append(errors, err)
		}
		if len(backups) > 0 {
			fmt.Print("\tBackups:\n")
			errs := make([]error, 0)
			for _, backup := range backups {
				errs = formatBackupEntity(&backup, false, errors)
			}
			if len(errs) > 0 {
				errors = append(errors, errs...)
			}
		}
	}
	return errors
}