formats

package
v0.0.0-...-59817e7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 1, 2025 License: MIT Imports: 8 Imported by: 0

Documentation

Overview

Package formats defines some example formats for use with the cobrautil and flagutil packages.

Index

Constants

This section is empty.

Variables

View Source
var Colorful = cobrautil.UsageFormatOptions{
	Format: cobrautil.Formatter{

		Header: func(s string) string {
			return ansiGreen().Bold().Styled(s)
		},

		Command: func(s string) string {
			return ansiCyan().Bold().Styled(s)
		},

		Args: func(s string) string {
			return ansiCyan().Styled(s)
		},

		Example: func(s string) string {
			lines := strings.Split(s, "\n")
			for i, line := range lines {
				switch {

				case strings.HasPrefix(strings.TrimSpace(line), "#"):
					lines[i] = ansiStyle().Faint().Styled(line)

				default:
					lines[i] = line
				}
			}
			return strings.Join(lines, "\n")
		},
	},
	FlagOptions: flagutil.UsageFormatOptions{

		Columns: flagutil.DynamicColumns(func() int {
			return termdoc.TerminalWidth(80)
		}),

		FormatFlagName: func(flag *pflag.Flag, name string) string {
			return ansiCyan().Bold().Styled(name)
		},

		FormatType: func(flag *pflag.Flag, typeName string) string {
			opt := options.FromFlag(flag)
			if opt.FlagType != "" {
				typeName = opt.FlagType
			}

			switch typeName {
			case "strings":
				typeName = "string..."
			case "ints":
				typeName = "int..."
			case "uints":
				typeName = "uint..."
			case "bools":
				typeName = "bool..."
			}
			return ansiCyan().Styled(typeName)
		},

		FormatValue: func(flag *pflag.Flag, value string) string {
			return ansiBold().Styled(value)
		},

		FormatUsage: func(flag *pflag.Flag, usage string) string {
			envName := flagutil.GetEnvName(flag)
			if envName != "" {
				usage += fmt.Sprintf(" (env: %s)", ansiCyan().Bold().Styled(envName))
			}
			return usage
		},
	},
	LocalFlags: cobrautil.FlagGroupingOptions{

		GroupFlags: true,
	},
	InheritedFlags: cobrautil.FlagGroupingOptions{

		GroupFlags: true,
	},
}

Colorful is a colorful formatting option.

View Source
var Markdown = cobrautil.UsageFormatOptions{
	Format: cobrautil.Formatter{

		Header: func(s string) string {
			return "## " + strings.TrimSuffix(s, ":") + "\n"
		},

		Command: func(s string) string {
			return mdBold(s)
		},

		Args: func(s string) string {
			return mdBold(s)
		},

		CommandAndArgs: func(s string) string {
			return mdCode(s)
		},

		Example: func(s string) string {
			return mdCodeBlock("bash", s)
		},
	},
	FlagOptions: flagutil.UsageFormatOptions{

		Columns: flagutil.StaticColumns(0),

		LineFunc: func(flag *pflag.Flag) (line string, skip bool) {
			if flag.Hidden || flag.Deprecated != "" {
				return "", true
			}

			var (
				flagName  string
				flagType  string
				flagUsage string
			)

			if flag.Shorthand != "" && flag.ShorthandDeprecated == "" {
				flagName = fmt.Sprintf("-%s, --%s", flag.Shorthand, flag.Name)
			} else {
				flagName = "--" + flag.Name
			}

			flagType, flagUsage = pflag.UnquoteUsage(flag)
			flagUsage = strings.ReplaceAll(flagUsage, "\n", "\n  ")

			envName := flagutil.GetEnvName(flag)
			if envName != "" {
				flagUsage += fmt.Sprintf(" (env: %s)", mdCode(envName))
			}

			if !flagutil.DefaultIsZeroValue(flag) {
				defValue := flag.DefValue
				if flag.Value.Type() == "string" {
					defValue = fmt.Sprintf("%q", defValue)
				}
				flagUsage += fmt.Sprintf(" (default %s)", mdBold(defValue))
			}

			flagName = mdCode(flagName)
			if flagType != "" {
				flagType = " " + mdItalics(flagType)
			}

			line = fmt.Sprintf("- %s%s: %s", flagName, flagType, flagUsage)

			return line, false
		},
	},
	LocalFlags: cobrautil.FlagGroupingOptions{

		GroupFlags: true,
	},
	InheritedFlags: cobrautil.FlagGroupingOptions{

		GroupFlags: true,
	},
}

Markdown is a format producing valid markdown.

Functions

This section is empty.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL