color support for cli client

This commit is contained in:
probandula
2016-10-26 20:01:16 +02:00
parent 82cead4b62
commit 9ddb15d7d4
2 changed files with 61 additions and 8 deletions

View File

@@ -83,4 +83,4 @@ Other fonts can mainly be found on [figlet](http://www.figlet.org). You have to
- [x] Cli client - [x] Cli client
- [ ] automatic the perfect char margin - [ ] automatic the perfect char margin
- [ ] Linebreak possible? - [ ] Linebreak possible?
- [ ] Colors in the cli client - [x] Colors in the cli client

View File

@@ -1,18 +1,20 @@
package main package main
import ( import (
"fmt"
"flag"
"log"
"errors" "errors"
_"github.com/fatih/color" "flag"
"fmt"
"github.com/fatih/color"
"github.com/probandula/figlet4go" "github.com/probandula/figlet4go"
"log"
"strings"
) )
var ( var (
str *string = flag.String("str", "", "String to be converted with FIGlet") str *string = flag.String("str", "", "String to be converted with FIGlet")
font *string = flag.String("font", "", "Font name to use") font *string = flag.String("font", "", "Font name to use")
fontpath *string = flag.String("fontpath", "", "Font path to load fonts from") fontpath *string = flag.String("fontpath", "", "Font path to load fonts from")
colors *string = flag.String("colors", "", "Character colors seperated by ';'\n\tPossible colors: black, red, green, yellow, blue, magenta, cyan, white")
) )
func main() { func main() {
@@ -37,6 +39,10 @@ func main() {
// Set the font // Set the font
options.FontName = *font options.FontName = *font
// Set colors
if *colors != "" {
options.FontColor = getColorSlice(*colors)
}
// Render the string // Render the string
renderStr, err := ascii.RenderOpts(*str, options) renderStr, err := ascii.RenderOpts(*str, options)
@@ -47,6 +53,53 @@ func main() {
fmt.Println(renderStr) fmt.Println(renderStr)
} }
// Get a slice with colors to give to the RenderOptions
// Splits the given string with the seperator ";"
func getColorSlice(colorStr string) []color.Attribute {
givenColors := strings.Split(colorStr, ";")
colors := make([]color.Attribute, len(givenColors))
for i, c := range givenColors {
if c == "black" {
colors[i] = color.FgBlack
continue
}
if c == "red" {
colors[i] = color.FgRed
continue
}
if c == "green" {
colors[i] = color.FgGreen
continue
}
if c == "yellow" {
colors[i] = color.FgYellow
continue
}
if c == "blue" {
colors[i] = color.FgBlue
continue
}
if c == "magenta" {
colors[i] = color.FgMagenta
continue
}
if c == "cyan" {
colors[i] = color.FgCyan
continue
}
if c == "white" {
colors[i] = color.FgWhite
continue
}
}
return colors
}
// Validate if all required options are given // Validate if all required options are given
// flag.Parse() must be called before this // flag.Parse() must be called before this
func validate() error { func validate() error {
@@ -54,4 +107,4 @@ func validate() error {
return errors.New("No string given") return errors.New("No string given")
} }
return nil return nil
} }