func formatStackInstanceEntity()

in cmd/hub/api/instance.go [86:213]


func formatStackInstanceEntity(instance *StackInstance, showSecrets, showLogs, showBackups bool, errors []error) []error {
	title := fmt.Sprintf("%s / %s [%s]", instance.Name, instance.Domain, instance.Id)
	if instance.Description != "" {
		title = fmt.Sprintf("%s - %s", title, instance.Description)
	}
	fmt.Printf("\n\t%s\n", title)
	if len(instance.Tags) > 0 {
		fmt.Printf("\t\tTags: %s\n", strings.Join(instance.Tags, ", "))
	}
	if instance.Environment.Name != "" {
		fmt.Printf("\t\tEnvironment: %s\n", formatEnvironmentRef(&instance.Environment))
	}
	if instance.Platform != nil && instance.Platform.Name != "" {
		fmt.Printf("\t\tPlatform: %s\n", formatPlatformRef(instance.Platform))
	}
	if instance.Stack.Name != "" {
		fmt.Printf("\t\tStack: %s\n", formatStackRef(&instance.Stack))
	}
	if instance.Template.Name != "" {
		fmt.Printf("\t\tTemplate: %s\n", formatTemplateRef(&instance.Template))
	}
	if len(instance.ComponentsEnabled) > 0 {
		fmt.Printf("\t\tComponents: %s\n", strings.Join(instance.ComponentsEnabled, ", "))
	}
	if len(instance.Verbs) > 0 {
		fmt.Printf("\t\tVerbs: %s\n", strings.Join(instance.Verbs, ", "))
	}
	if g := instance.GitRemote; g.Public != "" {
		templateRef := ""
		if g.Template != nil && g.Template.Ref != "" {
			templateRef = fmt.Sprintf("\n\t\t\tRef: %s", g.Template.Ref)
		}
		k8sRef := ""
		if g.K8s != nil && g.K8s.Ref != "" {
			k8sRef = fmt.Sprintf("\n\t\t\tstack-k8s-aws ref: %s", g.K8s.Ref)
		}
		fmt.Printf("\t\tGit: %s%s%s\n", g.Public, templateRef, k8sRef)
	}
	if instance.Status.Status != "" {
		fmt.Printf("\t\tStatus: %s\n", instance.Status.Status)
	}
	if len(instance.StateFiles) > 0 {
		fmt.Printf("\t\tState files:\n\t\t\t%s\n", strings.Join(instance.StateFiles, "\n\t\t\t"))
	}
	if len(instance.Provides) > 0 {
		formatted := formatStackProvides(instance.Provides, "\t\t\t")
		fmt.Printf("\t\tProvides:\n%s\n", formatted)
	}
	resource := fmt.Sprintf("%s/%s", stackInstancesResource, instance.Id)
	if len(instance.Outputs) > 0 {
		formatted, errs := formatStackOutputs(resource, instance.Outputs, showSecrets)
		fmt.Printf("\t\tOutputs:\n%s", formatted)
		if len(errs) > 0 {
			errors = append(errors, errs...)
		}
	}
	if len(instance.Parameters) > 0 {
		fmt.Print("\t\tParameters:\n")
		for _, param := range sortParameters(instance.Parameters) {
			formatted, err := formatParameter(resource, param, showSecrets)
			fmt.Printf("\t\t%s\n", formatted)
			if err != nil {
				errors = append(errors, err)
			}
		}
	}
	if instance.Status.Template != nil && instance.Status.Template.Commit != "" {
		t := instance.Status.Template
		commit := t.Commit
		if len(commit) > 7 {
			commit = commit[:7]
		}
		fmt.Printf("\t\tTemplate deployed: %s %s %s %v %s\n", commit, t.Ref, t.Author, t.Date, t.Subject)
	}
	if instance.Status.K8s != nil && instance.Status.K8s.Commit != "" {
		t := instance.Status.K8s
		commit := t.Commit
		if len(commit) > 7 {
			commit = commit[:7]
		}
		fmt.Printf("\t\tKubernetes deployed: %s %s %s %v %s\n", commit, t.Ref, t.Author, t.Date, t.Subject)
	}
	if len(instance.Status.Components) > 0 {
		fmt.Print("\t\tComponents Status:\n")
		for _, comp := range instance.Status.Components {
			fmt.Print(formatComponentStatus(comp))
		}
	}
	if len(instance.InflightOperations) > 0 {
		fmt.Print("\t\tInflight Operations:\n")
		for _, op := range instance.InflightOperations {
			fmt.Print(formatInflightOperation(op, showLogs))
		}
	}
	if showBackups {
		backups, err := backupsByInstanceId(instance.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, showLogs, errors)
			}
			if len(errs) > 0 {
				errors = append(errors, errs...)
			}
		}
		if instance.Platform == nil {
			backups, err = backupsByPlatformId(instance.Id)
			if err != nil {
				errors = append(errors, err)
			}
			if len(backups) > 0 {
				fmt.Print("\tOverlay backups:\n")
				errs := make([]error, 0)
				for _, backup := range backups {
					errs = formatBackupEntity(&backup, showLogs, errors)
				}
				if len(errs) > 0 {
					errors = append(errors, errs...)
				}
			}
		}
	}
	return errors
}