315 lines
7.3 KiB
Markdown
315 lines
7.3 KiB
Markdown
|
Aurora
|
||
|
======
|
||
|
|
||
|
[![go.dev reference](https://img.shields.io/badge/go.dev-reference-007d9c?logo=go&logoColor=white)](https://pkg.go.dev/github.com/logrusorgru/aurora?tab=doc)
|
||
|
[![Unlicense](https://img.shields.io/badge/license-unlicense-blue.svg)](http://unlicense.org/)
|
||
|
[![Build Status](https://travis-ci.org/logrusorgru/aurora.svg)](https://travis-ci.org/logrusorgru/aurora)
|
||
|
[![Coverage Status](https://coveralls.io/repos/logrusorgru/aurora/badge.svg?branch=master)](https://coveralls.io/r/logrusorgru/aurora?branch=master)
|
||
|
[![GoReportCard](https://goreportcard.com/badge/logrusorgru/aurora)](https://goreportcard.com/report/logrusorgru/aurora)
|
||
|
[![Gitter](https://img.shields.io/badge/chat-on_gitter-46bc99.svg?logo=data:image%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTQiIHdpZHRoPSIxNCI%2BPGcgZmlsbD0iI2ZmZiI%2BPHJlY3QgeD0iMCIgeT0iMyIgd2lkdGg9IjEiIGhlaWdodD0iNSIvPjxyZWN0IHg9IjIiIHk9IjQiIHdpZHRoPSIxIiBoZWlnaHQ9IjciLz48cmVjdCB4PSI0IiB5PSI0IiB3aWR0aD0iMSIgaGVpZ2h0PSI3Ii8%2BPHJlY3QgeD0iNiIgeT0iNCIgd2lkdGg9IjEiIGhlaWdodD0iNCIvPjwvZz48L3N2Zz4%3D&logoWidth=10)](https://gitter.im/logrusorgru/aurora)
|
||
|
|
||
|
Ultimate ANSI colors for Golang. The package supports Printf/Sprintf etc.
|
||
|
|
||
|
|
||
|
![aurora logo](https://github.com/logrusorgru/aurora/blob/master/gopher_aurora.png)
|
||
|
|
||
|
# TOC
|
||
|
|
||
|
- [Installation](#installation)
|
||
|
- [Usage](#usage)
|
||
|
+ [Simple](#simple)
|
||
|
+ [Printf](#printf)
|
||
|
+ [aurora.Sprintf](#aurorasprintf)
|
||
|
+ [Enable/Disable colors](#enabledisable-colors)
|
||
|
- [Chains](#chains)
|
||
|
- [Colorize](#colorize)
|
||
|
- [Grayscale](#grayscale)
|
||
|
- [8-bit colors](#8-bit-colors)
|
||
|
- [Supported Colors & Formats](#supported-colors--formats)
|
||
|
+ [All colors](#all-colors)
|
||
|
+ [Standard and bright colors](#standard-and-bright-colors)
|
||
|
+ [Formats are likely supported](#formats-are-likely-supported)
|
||
|
+ [Formats are likely unsupported](#formats-are-likely-unsupported)
|
||
|
- [Limitations](#limitations)
|
||
|
+ [Windows](#windows)
|
||
|
+ [TTY](#tty)
|
||
|
- [Licensing](#licensing)
|
||
|
|
||
|
# Installation
|
||
|
|
||
|
Get
|
||
|
```
|
||
|
go get -u github.com/logrusorgru/aurora
|
||
|
```
|
||
|
Test
|
||
|
```
|
||
|
go test -cover github.com/logrusorgru/aurora
|
||
|
```
|
||
|
|
||
|
# Usage
|
||
|
|
||
|
### Simple
|
||
|
|
||
|
```go
|
||
|
package main
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
|
||
|
. "github.com/logrusorgru/aurora"
|
||
|
)
|
||
|
|
||
|
func main() {
|
||
|
fmt.Println("Hello,", Magenta("Aurora"))
|
||
|
fmt.Println(Bold(Cyan("Cya!")))
|
||
|
}
|
||
|
|
||
|
```
|
||
|
|
||
|
![simple png](https://github.com/logrusorgru/aurora/blob/master/simple.png)
|
||
|
|
||
|
### Printf
|
||
|
|
||
|
```go
|
||
|
package main
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
|
||
|
. "github.com/logrusorgru/aurora"
|
||
|
)
|
||
|
|
||
|
func main() {
|
||
|
fmt.Printf("Got it %d times\n", Green(1240))
|
||
|
fmt.Printf("PI is %+1.2e\n", Cyan(3.14))
|
||
|
}
|
||
|
|
||
|
```
|
||
|
|
||
|
![printf png](https://github.com/logrusorgru/aurora/blob/master/printf.png)
|
||
|
|
||
|
### aurora.Sprintf
|
||
|
|
||
|
```go
|
||
|
package main
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
|
||
|
. "github.com/logrusorgru/aurora"
|
||
|
)
|
||
|
|
||
|
func main() {
|
||
|
fmt.Println(Sprintf(Magenta("Got it %d times"), Green(1240)))
|
||
|
}
|
||
|
|
||
|
```
|
||
|
|
||
|
![sprintf png](https://github.com/logrusorgru/aurora/blob/master/sprintf.png)
|
||
|
|
||
|
### Enable/Disable colors
|
||
|
|
||
|
```go
|
||
|
package main
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"flag"
|
||
|
|
||
|
"github.com/logrusorgru/aurora"
|
||
|
)
|
||
|
|
||
|
// colorizer
|
||
|
var au aurora.Aurora
|
||
|
|
||
|
var colors = flag.Bool("colors", false, "enable or disable colors")
|
||
|
|
||
|
func init() {
|
||
|
flag.Parse()
|
||
|
au = aurora.NewAurora(*colors)
|
||
|
}
|
||
|
|
||
|
func main() {
|
||
|
// use colorizer
|
||
|
fmt.Println(au.Green("Hello"))
|
||
|
}
|
||
|
|
||
|
```
|
||
|
Without flags:
|
||
|
![disable png](https://github.com/logrusorgru/aurora/blob/master/disable.png)
|
||
|
|
||
|
With `-colors` flag:
|
||
|
![enable png](https://github.com/logrusorgru/aurora/blob/master/enable.png)
|
||
|
|
||
|
# Chains
|
||
|
|
||
|
The following samples are equal
|
||
|
|
||
|
```go
|
||
|
x := BgMagenta(Bold(Red("x")))
|
||
|
```
|
||
|
|
||
|
```go
|
||
|
x := Red("x").Bold().BgMagenta()
|
||
|
```
|
||
|
|
||
|
The second is more readable
|
||
|
|
||
|
# Colorize
|
||
|
|
||
|
There is `Colorize` function that allows to choose some colors and
|
||
|
format from a side
|
||
|
|
||
|
```go
|
||
|
|
||
|
func getColors() Color {
|
||
|
// some stuff that returns appropriate colors and format
|
||
|
}
|
||
|
|
||
|
// [...]
|
||
|
|
||
|
func main() {
|
||
|
fmt.Println(Colorize("Greeting", getColors()))
|
||
|
}
|
||
|
|
||
|
```
|
||
|
Less complicated example
|
||
|
|
||
|
```go
|
||
|
x := Colorize("Greeting", GreenFg|GrayBg|BoldFm)
|
||
|
```
|
||
|
|
||
|
Unlike other color functions and methods (such as Red/BgBlue etc)
|
||
|
a `Colorize` clears previous colors
|
||
|
|
||
|
```go
|
||
|
x := Red("x").Colorize(BgGreen) // will be with green background only
|
||
|
```
|
||
|
|
||
|
# Grayscale
|
||
|
|
||
|
```go
|
||
|
fmt.Println(" ",
|
||
|
Gray(1-1, " 00-23 ").BgGray(24-1),
|
||
|
Gray(4-1, " 03-19 ").BgGray(20-1),
|
||
|
Gray(8-1, " 07-15 ").BgGray(16-1),
|
||
|
Gray(12-1, " 11-11 ").BgGray(12-1),
|
||
|
Gray(16-1, " 15-07 ").BgGray(8-1),
|
||
|
Gray(20-1, " 19-03 ").BgGray(4-1),
|
||
|
Gray(24-1, " 23-00 ").BgGray(1-1),
|
||
|
)
|
||
|
```
|
||
|
|
||
|
![grayscale png](https://github.com/logrusorgru/aurora/blob/master/aurora_grayscale.png)
|
||
|
|
||
|
# 8-bit colors
|
||
|
|
||
|
Methods `Index` and `BgIndex` implements 8-bit colors.
|
||
|
|
||
|
| Index/BgIndex | Meaning | Foreground | Background |
|
||
|
| -------------- | --------------- | ---------- | ---------- |
|
||
|
| 0- 7 | standard colors | 30- 37 | 40- 47 |
|
||
|
| 8- 15 | bright colors | 90- 97 | 100-107 |
|
||
|
| 16-231 | 216 colors | 38;5;n | 48;5;n |
|
||
|
| 232-255 | 24 grayscale | 38;5;n | 48;5;n |
|
||
|
|
||
|
|
||
|
# Supported colors & formats
|
||
|
|
||
|
- formats
|
||
|
+ bold (1)
|
||
|
+ faint (2)
|
||
|
+ doubly-underline (21)
|
||
|
+ fraktur (20)
|
||
|
+ italic (3)
|
||
|
+ underline (4)
|
||
|
+ slow blink (5)
|
||
|
+ rapid blink (6)
|
||
|
+ reverse video (7)
|
||
|
+ conceal (8)
|
||
|
+ crossed out (9)
|
||
|
+ framed (51)
|
||
|
+ encircled (52)
|
||
|
+ overlined (53)
|
||
|
- background and foreground colors, including bright
|
||
|
+ black
|
||
|
+ red
|
||
|
+ green
|
||
|
+ yellow (brown)
|
||
|
+ blue
|
||
|
+ magenta
|
||
|
+ cyan
|
||
|
+ white
|
||
|
+ 24 grayscale colors
|
||
|
+ 216 8-bit colors
|
||
|
|
||
|
### All colors
|
||
|
|
||
|
![linux png](https://github.com/logrusorgru/aurora/blob/master/aurora_colors_black.png)
|
||
|
![white png](https://github.com/logrusorgru/aurora/blob/master/aurora_colors_white.png)
|
||
|
|
||
|
### Standard and bright colors
|
||
|
|
||
|
![linux black standard png](https://github.com/logrusorgru/aurora/blob/master/aurora_black_standard.png)
|
||
|
![linux white standard png](https://github.com/logrusorgru/aurora/blob/master/aurora_white_standard.png)
|
||
|
|
||
|
### Formats are likely supported
|
||
|
|
||
|
![formats supported gif](https://github.com/logrusorgru/aurora/blob/master/aurora_formats.gif)
|
||
|
|
||
|
### Formats are likely unsupported
|
||
|
|
||
|
![formats rarely supported png](https://github.com/logrusorgru/aurora/blob/master/aurora_rarely_supported.png)
|
||
|
|
||
|
# Limitations
|
||
|
|
||
|
There is no way to represent `%T` and `%p` with colors using
|
||
|
a standard approach
|
||
|
|
||
|
```go
|
||
|
package main
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
|
||
|
. "github.com/logrusorgru/aurora"
|
||
|
)
|
||
|
|
||
|
func main() {
|
||
|
r := Red("red")
|
||
|
var i int
|
||
|
fmt.Printf("%T %p\n", r, Green(&i))
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Output will be without colors
|
||
|
|
||
|
```
|
||
|
aurora.value %!p(aurora.value={0xc42000a310 768 0})
|
||
|
```
|
||
|
|
||
|
The obvious workaround is `Red(fmt.Sprintf("%T", some))`
|
||
|
|
||
|
### Windows
|
||
|
|
||
|
The Aurora provides ANSI colors only, so there is no support for Windows. That said, there are workarounds available.
|
||
|
Check out these comments to learn more:
|
||
|
|
||
|
- [Using go-colorable](https://github.com/logrusorgru/aurora/issues/2#issuecomment-299014211).
|
||
|
- [Using registry for Windows 10](https://github.com/logrusorgru/aurora/issues/10#issue-476361247).
|
||
|
|
||
|
### TTY
|
||
|
|
||
|
The Aurora has no internal TTY detectors by design. Take a look
|
||
|
[this comment](https://github.com/logrusorgru/aurora/issues/2#issuecomment-299030108) if you want turn
|
||
|
on colors for a terminal only, and turn them off for a file.
|
||
|
|
||
|
### Licensing
|
||
|
|
||
|
Copyright © 2016-2020 The Aurora Authors. This work is free.
|
||
|
It comes without any warranty, to the extent permitted by applicable
|
||
|
law. You can redistribute it and/or modify it under the terms of the
|
||
|
the Unlicense. See the LICENSE file for more details.
|
||
|
|
||
|
|