func()

in pkg/cmd/describe_kamelet.go [98:181]


func (command *describeKameletCommandOptions) describeKamelet(cmd *cobra.Command, kamelet v1.Kamelet) (string, error) {
	return indentedwriter.IndentedString(func(out io.Writer) error {
		w := indentedwriter.NewWriter(cmd.OutOrStdout())

		describeObjectMeta(w, kamelet.ObjectMeta)
		// Definition
		def := kamelet.Spec.Definition
		if def != nil {
			w.Writef(0, "Definition:\n")
			w.Writef(1, "Title:\t%s\n", def.Title)
			w.Writef(1, "Description:\n")
			for _, s := range strings.Split(def.Description, "\n") {
				w.Writef(2, "%s\n", s)
			}
			if len(def.Required) > 0 {
				w.Writef(1, "Required:\n")
				for _, req := range def.Required {
					w.Writef(2, "%s\n", req)
				}
			}
			if len(def.Properties) > 0 {
				w.Writef(1, "Properties:\n")
				for _, k := range kamelet.SortedDefinitionPropertiesKeys() {
					p := def.Properties[k]
					w.Writef(2, "%s:\n", k)
					w.Writef(3, "Title:\t%s\n", p.Title)
					w.Writef(3, "Description:\t%s\n", p.Description)
					w.Writef(3, "Type:\t%s\n", p.Type)
					if p.Default != nil {
						w.Writef(3, "Default:\t%s\n", p.Default)
					}
				}
			}
		}

		// Types
		if len(kamelet.Spec.DataTypes) > 0 {
			w.Writef(0, "Types:\n")
			for _, k := range kamelet.SortedTypesKeys() {
				t := kamelet.Spec.DataTypes[k]
				w.Writef(1, "%s:\n", k)
				w.Writef(2, "Default:\t%s\n", t.Default)
				w.Writef(2, "Types:\t\n")
				w.Writef(3, "Format\tScheme\tMediaType\tDescription\n")
				for _, dt := range t.Types {
					w.Writef(3, "%s\t%s\t%s\t%s", dt.Format, dt.Scheme, dt.MediaType, dt.Description)
				}
			}
		}

		// Template
		// TODO pretty print template data
		template := kamelet.Spec.Template
		if template != nil {
			w.Writef(0, "Template:\n")
			w.Writef(1, "%s\n", string(template.RawMessage))
		}

		// Dependencies
		if len(kamelet.Spec.Dependencies) > 0 {
			w.Writef(0, "Dependencies:\t\n")
			for _, d := range kamelet.Spec.Dependencies {
				w.Writef(1, "%s\n", d)
			}
		}

		// Sources
		if len(kamelet.Spec.Sources) > 0 {
			w.Writef(0, "Sources:\t\n")
			//nolint:dupword
			w.Writef(1, "Name\tLanguage\tCompression\tRef\tRef Key\n")
			for _, s := range kamelet.Spec.Sources {
				w.Writef(1, "%s\t%s\t%t\t%s\t%s\n",
					s.Name,
					s.InferLanguage(),
					s.Compression,
					s.ContentRef,
					s.ContentKey)
			}
		}

		return nil
	})
}