GenYamlCustom creates custom yaml output.
(cmd *cobra.Command, w io.Writer, linkHandler func(string) string)
| 91 | |
| 92 | // GenYamlCustom creates custom yaml output. |
| 93 | func GenYamlCustom(cmd *cobra.Command, w io.Writer, linkHandler func(string) string) error { |
| 94 | cmd.InitDefaultHelpCmd() |
| 95 | cmd.InitDefaultHelpFlag() |
| 96 | |
| 97 | yamlDoc := cmdDoc{} |
| 98 | yamlDoc.Name = cmd.CommandPath() |
| 99 | |
| 100 | yamlDoc.Synopsis = forceMultiLine(cmd.Short) |
| 101 | yamlDoc.Description = forceMultiLine(cmd.Long) |
| 102 | |
| 103 | if cmd.Runnable() { |
| 104 | yamlDoc.Usage = cmd.UseLine() |
| 105 | } |
| 106 | |
| 107 | if len(cmd.Example) > 0 { |
| 108 | yamlDoc.Example = cmd.Example |
| 109 | } |
| 110 | |
| 111 | flags := cmd.NonInheritedFlags() |
| 112 | if flags.HasFlags() { |
| 113 | yamlDoc.Options = genFlagResult(flags) |
| 114 | } |
| 115 | flags = cmd.InheritedFlags() |
| 116 | if flags.HasFlags() { |
| 117 | yamlDoc.InheritedOptions = genFlagResult(flags) |
| 118 | } |
| 119 | |
| 120 | if hasSeeAlso(cmd) { |
| 121 | result := []string{} |
| 122 | if cmd.HasParent() { |
| 123 | parent := cmd.Parent() |
| 124 | result = append(result, parent.CommandPath()+" - "+parent.Short) |
| 125 | } |
| 126 | children := cmd.Commands() |
| 127 | sort.Sort(byName(children)) |
| 128 | for _, child := range children { |
| 129 | if !child.IsAvailableCommand() || child.IsAdditionalHelpTopicCommand() { |
| 130 | continue |
| 131 | } |
| 132 | result = append(result, child.CommandPath()+" - "+child.Short) |
| 133 | } |
| 134 | yamlDoc.SeeAlso = result |
| 135 | } |
| 136 | |
| 137 | final, err := yaml.Marshal(&yamlDoc) |
| 138 | if err != nil { |
| 139 | fmt.Println(err) |
| 140 | os.Exit(1) |
| 141 | } |
| 142 | |
| 143 | if _, err := w.Write(final); err != nil { |
| 144 | return err |
| 145 | } |
| 146 | return nil |
| 147 | } |
| 148 | |
| 149 | func genFlagResult(flags *pflag.FlagSet) []cmdOption { |
| 150 | var result []cmdOption |
no test coverage detected