mirror of https://github.com/gogits/gogs.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
2.4 KiB
89 lines
2.4 KiB
12 years ago
|
// Copyright 2013 gopm authors.
|
||
|
//
|
||
|
// Licensed under the Apache License, Version 2.0 (the "License"): you may
|
||
|
// not use this file except in compliance with the License. You may obtain
|
||
|
// a copy of the License at
|
||
|
//
|
||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||
|
//
|
||
|
// Unless required by applicable law or agreed to in writing, software
|
||
|
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||
|
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||
|
// License for the specific language governing permissions and limitations
|
||
|
// under the License.
|
||
|
|
||
|
package doc
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"runtime"
|
||
|
"strings"
|
||
|
)
|
||
|
|
||
|
const (
|
||
|
Gray = uint8(iota + 90)
|
||
|
Red
|
||
|
Green
|
||
|
Yellow
|
||
|
Blue
|
||
|
Magenta
|
||
|
//NRed = uint8(31) // Normal
|
||
|
EndColor = "\033[0m"
|
||
|
)
|
||
|
|
||
|
// ColorLog colors log and print to stdout.
|
||
|
// Log format: <level> <content [highlight][path]> [ error ].
|
||
|
// Level: TRAC -> blue; ERRO -> red; WARN -> Magenta; SUCC -> green; others -> default.
|
||
|
// Content: default; path: yellow; error -> red.
|
||
|
// Level has to be surrounded by "[" and "]".
|
||
|
// Highlights have to be surrounded by "# " and " #"(space).
|
||
|
// Paths have to be surrounded by "( " and " )"(sapce).
|
||
|
// Errors have to be surrounded by "[ " and " ]"(space).
|
||
|
func ColorLog(format string, a ...interface{}) {
|
||
|
log := fmt.Sprintf(format, a...)
|
||
|
if runtime.GOOS != "windows" {
|
||
|
var clog string
|
||
|
|
||
|
// Level.
|
||
|
i := strings.Index(log, "]")
|
||
|
if log[0] == '[' && i > -1 {
|
||
|
clog += "[" + getColorLevel(log[1:i]) + "]"
|
||
|
}
|
||
|
|
||
|
log = log[i+1:]
|
||
|
|
||
|
// Error.
|
||
|
log = strings.Replace(log, "[ ", fmt.Sprintf("[\033[%dm", Red), -1)
|
||
|
log = strings.Replace(log, " ]", EndColor+"]", -1)
|
||
|
|
||
|
// Path.
|
||
|
log = strings.Replace(log, "( ", fmt.Sprintf("(\033[%dm", Yellow), -1)
|
||
|
log = strings.Replace(log, " )", EndColor+")", -1)
|
||
|
|
||
|
// Highlights.
|
||
|
log = strings.Replace(log, "# ", fmt.Sprintf("\033[%dm", Gray), -1)
|
||
|
log = strings.Replace(log, " #", EndColor, -1)
|
||
|
|
||
|
log = clog + log
|
||
|
}
|
||
|
|
||
|
fmt.Print(log)
|
||
|
}
|
||
|
|
||
|
// getColorLevel returns colored level string by given level.
|
||
|
func getColorLevel(level string) string {
|
||
|
level = strings.ToUpper(level)
|
||
|
switch level {
|
||
|
case "TRAC":
|
||
|
return fmt.Sprintf("\033[%dm%s\033[0m", Blue, level)
|
||
|
case "ERRO":
|
||
|
return fmt.Sprintf("\033[%dm%s\033[0m", Red, level)
|
||
|
case "WARN":
|
||
|
return fmt.Sprintf("\033[%dm%s\033[0m", Magenta, level)
|
||
|
case "SUCC":
|
||
|
return fmt.Sprintf("\033[%dm%s\033[0m", Green, level)
|
||
|
default:
|
||
|
return level
|
||
|
}
|
||
|
}
|