CLI Color

GitHub go.mod Go version Actions Status Codacy Badge GoDoc GitHub tag (latest SemVer) Build Status Coverage Status Go Report Card

Golang下的命令行色彩使用库, 拥有丰富的色彩渲染输出,通用的API方法,兼容Windows系统

基本颜色预览:

basic-color

现在,256色和RGB色彩也已经支持windows CMD和PowerShell中工作:

color-on-cmd-pwsh

功能特色

cmd.exev1.2.4PrintPrintfPrintlnSprintSprintfmessageBoldBlackWhiteGrayRedGreenYellowBlueMagentaCyanInfoNoteLightErrorDangerNoticeSuccessCommentPrimaryWarningQuestionSecondary

GoDoc

安装

go get github.com/gookit/color

提示

color.PrintXfmt.PrintX
str := color.Red.Sprint("an colored message string")

// Windows 下将不会输出颜色
fmt.Println(str)

// Windows 也可以输出色彩
color.Println(str)

color.PrintXfmt.PrintX

快速开始

如下,引入当前包就可以快速的使用

package main

import (
	"fmt"
	
	"github.com/gookit/color"
)

func main() {
	// 简单快速的使用,跟 fmt.Print* 类似
	color.Red.Println("Simple to use color")
	color.Green.Print("Simple to use color\n")
	color.Cyan.Printf("Simple to use %s\n", "color")
	color.Yellow.Printf("Simple to use %s\n", "color")

	// use like func
	red := color.FgRed.Render
	green := color.FgGreen.Render
	fmt.Printf("%s line %s library\n", red("Command"), green("color"))

	// 自定义颜色
	color.New(color.FgWhite, color.BgBlack).Println("custom color style")

	// 也可以:
	color.Style{color.FgCyan, color.OpBold}.Println("custom color style")
	
	// internal style:
	color.Info.Println("message")
	color.Warn.Println("message")
	color.Error.Println("message")
	
	// 使用颜色标签
	color.Print("<suc>he</><comment>llo</>, <cyan>wel</><red>come</>\n")

	// apply a style tag
	color.Tag("info").Println("info style text")

	// prompt message
	color.Info.Prompt("prompt style message")
	color.Warn.Prompt("prompt style message")

	// tips message
	color.Info.Tips("tips style message")
	color.Warn.Tips("tips style message")
}

go run ./_examples/demo.go

colored-out

构建风格

// 仅设置前景色
color.FgCyan.Printf("Simple to use %s\n", "color")
// 仅设置背景色
color.BgRed.Printf("Simple to use %s\n", "color")

// 完全自定义: 前景色 背景色 选项
style := color.New(color.FgWhite, color.BgBlack, color.OpBold)
style.Println("custom color style")

// 也可以:
color.Style{color.FgCyan, color.OpBold}.Println("custom color style")

直接设置控制台属性:

// 设置console颜色
color.Set(color.FgCyan)

// 输出信息
fmt.Print("message")

// 重置console颜色
color.Reset()

当然,color已经内置丰富的色彩风格支持

基础颜色方法

cmd.exepowerShell
color.Boldcolor.Blackcolor.Whitecolor.Graycolor.Redcolor.Greencolor.Yellowcolor.Bluecolor.Magentacolor.Cyan
color.Bold.Println("bold message")
color.Yellow.Println("yellow message")

go run ./_examples/basiccolor.go

basic-color

扩展风格方法

cmd.exepowerShell
color.Infocolor.Notecolor.Lightcolor.Errorcolor.Dangercolor.Noticecolor.Successcolor.Commentcolor.Primarycolor.Warningcolor.Questioncolor.Secondary

基础风格

// print message
color.Info.Println("Info message")
color.Success.Println("Success message")

go run ./_examples/theme_basic.go

theme-basic

简约提示风格

color.Info.Tips("tips style message")
color.Warn.Tips("tips style message")

go run ./_examples/theme_tips.go

theme-tips

着重提示风格

color.Info.Prompt("prompt style message")
color.Warn.Prompt("prompt style message")

go run ./_examples/theme_prompt.go

theme-prompt

强调提示风格

color.Info.Block("prompt style message")
color.Warn.Block("prompt style message")

go run ./_examples/theme_block.go

theme-block

使用颜色标签

cmd.exePowerShell

使用内置的颜色标签,可以非常方便简单的构建自己需要的任何格式

// 使用内置的 color tag
color.Print("<suc>he</><comment>llo</>, <cyan>wel</><red>come</>")
color.Println("<suc>hello</>")
color.Println("<error>hello</>")
color.Println("<warning>hello</>")

// 自定义颜色属性
color.Print("<fg=yellow;bg=black;op=underscore;>hello, welcome</>\n")

color.Tag

给后面输出的文本信息加上给定的颜色风格标签

// set a style tag
color.Tag("info").Print("info style text")
color.Tag("info").Printf("%s style text", "info")
color.Tag("info").Println("info style text")

go run ./_examples/colortag.go

color-tags

256色使用

v1.2.4

使用前景或后景色

color.C256(val uint8, isBg ...bool) Color256
c := color.C256(132) // fg color
c.Println("message")
c.Printf("format %s", "message")

c := color.C256(132, true) // bg color
c.Println("message")
c.Printf("format %s", "message")

使用风格

可同时设置前景和背景色

color.S256(fgAndBg ...uint8) *Style256
s := color.S256(32, 203)
s.Println("message")
s.Printf("format %s", "message")

可以同时添加选项设置:

s := color.S256(32, 203)
s.SetOpts(color.Opts{color.OpBold})

s.Println("style with options")
s.Printf("style with %s\n", "options")

go run ./_examples/color256.go

color-tags

RGB色彩使用

v1.2.4CMDPowerShell

效果预览:

Run demo: go run ./_examples/color_rgb.go

color-rgb

代码示例:

color.RGB(30, 144, 255).Println("message. use RGB number")

color.HEX("#1976D2").Println("blue-darken")
color.HEX("#D50000", true).Println("red-accent. use HEX style")

color.RGBStyleFromString("213,0,0").Println("red-accent. use RGB number")
color.HEXStyle("eee", "D50000").Println("deep-purple color")

使用前景或后景色

color.RGB(r, g, b uint8, isBg ...bool) RGBColor
c := color.RGB(30,144,255) // fg color
c.Println("message")
c.Printf("format %s", "message")

c := color.RGB(30,144,255, true) // bg color
c.Println("message")
c.Printf("format %s", "message")

color.HEX(hex string, isBg ...bool) RGBColor
c := color.HEX("ccc") // 也可以写为: "cccccc" "#cccccc"
c.Println("message")
c.Printf("format %s", "message")

c = color.HEX("aabbcc", true) // as bg color
c.Println("message")
c.Printf("format %s", "message")

使用风格

可同时设置前景和背景色

color.NewRGBStyle(fg RGBColor, bg ...RGBColor) *RGBStyle
s := color.NewRGBStyle(RGB(20, 144, 234), RGB(234, 78, 23))
s.Println("message")
s.Printf("format %s", "message")

color.HEXStyle(fg string, bg ...string) *RGBStyle
s := color.HEXStyle("11aa23", "eee")
s.Println("message")
s.Printf("format %s", "message")

  • 可以同时添加选项设置:
s := color.HEXStyle("11aa23", "eee")
s.SetOpts(color.Opts{color.OpBold})

s.Println("style with options")
s.Printf("style with %s\n", "options")

方法参考

一些有用的工具方法参考

Disable()SetOutput(io.Writer)ForceOpenColor()ClearCode(str string) stringColors2code(colors ...Color) stringClearTag(s string) stringIsConsole(w io.Writer)HexToRgb(hex string) (rgb []int)RgbToHex(rgb []int) string

Gookit 工具包

参考项目

License

MIT