feat: v0.3.0d — add PR checks, iostreams, aliases, and broad enhancements
Add PR checks command, iostreams/text packages for colored table output, top-level run/workflow aliases matching gh CLI structure. Enhance actions, issues, PRs, releases, repos, labels, milestones, and wiki commands with improved flags, JSON output, and error handling.
This commit is contained in:
parent
7c0dcc8696
commit
113505de95
29 changed files with 3131 additions and 542 deletions
77
internal/iostreams/color.go
Normal file
77
internal/iostreams/color.go
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
package iostreams
|
||||
|
||||
import "fmt"
|
||||
|
||||
// ColorScheme provides semantic color methods that respect whether color output is enabled.
|
||||
type ColorScheme struct {
|
||||
enabled bool
|
||||
}
|
||||
|
||||
// NewColorScheme creates a ColorScheme. When enabled is false, all methods return
|
||||
// undecorated text.
|
||||
func NewColorScheme(enabled bool) *ColorScheme {
|
||||
return &ColorScheme{enabled: enabled}
|
||||
}
|
||||
|
||||
// colorize wraps text in ANSI escape codes if color is enabled.
|
||||
func (cs *ColorScheme) colorize(code string, text string) string {
|
||||
if !cs.enabled {
|
||||
return text
|
||||
}
|
||||
return fmt.Sprintf("\033[%sm%s\033[0m", code, text)
|
||||
}
|
||||
|
||||
// Bold renders text in bold.
|
||||
func (cs *ColorScheme) Bold(s string) string {
|
||||
return cs.colorize("1", s)
|
||||
}
|
||||
|
||||
// Red renders text in red.
|
||||
func (cs *ColorScheme) Red(s string) string {
|
||||
return cs.colorize("31", s)
|
||||
}
|
||||
|
||||
// Green renders text in green.
|
||||
func (cs *ColorScheme) Green(s string) string {
|
||||
return cs.colorize("32", s)
|
||||
}
|
||||
|
||||
// Yellow renders text in yellow.
|
||||
func (cs *ColorScheme) Yellow(s string) string {
|
||||
return cs.colorize("33", s)
|
||||
}
|
||||
|
||||
// Cyan renders text in cyan.
|
||||
func (cs *ColorScheme) Cyan(s string) string {
|
||||
return cs.colorize("36", s)
|
||||
}
|
||||
|
||||
// Magenta renders text in magenta.
|
||||
func (cs *ColorScheme) Magenta(s string) string {
|
||||
return cs.colorize("35", s)
|
||||
}
|
||||
|
||||
// Muted renders text in gray (dimmed).
|
||||
func (cs *ColorScheme) Muted(s string) string {
|
||||
return cs.colorize("90", s)
|
||||
}
|
||||
|
||||
// SuccessIcon returns a green check mark if color is enabled, plain otherwise.
|
||||
func (cs *ColorScheme) SuccessIcon() string {
|
||||
return cs.Green("✓")
|
||||
}
|
||||
|
||||
// WarningIcon returns a yellow exclamation mark if color is enabled, plain otherwise.
|
||||
func (cs *ColorScheme) WarningIcon() string {
|
||||
return cs.Yellow("!")
|
||||
}
|
||||
|
||||
// FailureIcon returns a red X mark if color is enabled, plain otherwise.
|
||||
func (cs *ColorScheme) FailureIcon() string {
|
||||
return cs.Red("✗")
|
||||
}
|
||||
|
||||
// SuccessIconWithColor returns the success icon followed by the message in green.
|
||||
func (cs *ColorScheme) SuccessIconWithColor(msg string) string {
|
||||
return cs.SuccessIcon() + " " + cs.Green(msg)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue