mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +09:00 
			
		
		
		
	Added all required dependencies
This commit is contained in:
		
							
								
								
									
										161
									
								
								vendor/github.com/Unknwon/com/cmd.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										161
									
								
								vendor/github.com/Unknwon/com/cmd.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,161 @@ | ||||
| // +build go1.2 | ||||
|  | ||||
| // Copyright 2013 com 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 com is an open source project for commonly used functions for the Go programming language. | ||||
| package com | ||||
|  | ||||
| import ( | ||||
| 	"bytes" | ||||
| 	"fmt" | ||||
| 	"os/exec" | ||||
| 	"runtime" | ||||
| 	"strings" | ||||
| ) | ||||
|  | ||||
| // ExecCmdDirBytes executes system command in given directory | ||||
| // and return stdout, stderr in bytes type, along with possible error. | ||||
| func ExecCmdDirBytes(dir, cmdName string, args ...string) ([]byte, []byte, error) { | ||||
| 	bufOut := new(bytes.Buffer) | ||||
| 	bufErr := new(bytes.Buffer) | ||||
|  | ||||
| 	cmd := exec.Command(cmdName, args...) | ||||
| 	cmd.Dir = dir | ||||
| 	cmd.Stdout = bufOut | ||||
| 	cmd.Stderr = bufErr | ||||
|  | ||||
| 	err := cmd.Run() | ||||
| 	return bufOut.Bytes(), bufErr.Bytes(), err | ||||
| } | ||||
|  | ||||
| // ExecCmdBytes executes system command | ||||
| // and return stdout, stderr in bytes type, along with possible error. | ||||
| func ExecCmdBytes(cmdName string, args ...string) ([]byte, []byte, error) { | ||||
| 	return ExecCmdDirBytes("", cmdName, args...) | ||||
| } | ||||
|  | ||||
| // ExecCmdDir executes system command in given directory | ||||
| // and return stdout, stderr in string type, along with possible error. | ||||
| func ExecCmdDir(dir, cmdName string, args ...string) (string, string, error) { | ||||
| 	bufOut, bufErr, err := ExecCmdDirBytes(dir, cmdName, args...) | ||||
| 	return string(bufOut), string(bufErr), err | ||||
| } | ||||
|  | ||||
| // ExecCmd executes system command | ||||
| // and return stdout, stderr in string type, along with possible error. | ||||
| func ExecCmd(cmdName string, args ...string) (string, string, error) { | ||||
| 	return ExecCmdDir("", cmdName, args...) | ||||
| } | ||||
|  | ||||
| // _________        .__                 .____ | ||||
| // \_   ___ \  ____ |  |   ___________  |    |    ____   ____ | ||||
| // /    \  \/ /  _ \|  |  /  _ \_  __ \ |    |   /  _ \ / ___\ | ||||
| // \     \___(  <_> )  |_(  <_> )  | \/ |    |__(  <_> ) /_/  > | ||||
| //  \______  /\____/|____/\____/|__|    |_______ \____/\___  / | ||||
| //         \/                                   \/    /_____/ | ||||
|  | ||||
| // Color number constants. | ||||
| const ( | ||||
| 	Gray = uint8(iota + 90) | ||||
| 	Red | ||||
| 	Green | ||||
| 	Yellow | ||||
| 	Blue | ||||
| 	Magenta | ||||
| 	//NRed      = uint8(31) // Normal | ||||
| 	EndColor = "\033[0m" | ||||
| ) | ||||
|  | ||||
| // 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 | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // ColorLogS colors log and return colored content. | ||||
| // 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), "#" will be deleted. | ||||
| // Paths have to be surrounded by "( " and " )"(space). | ||||
| // Errors have to be surrounded by "[ " and " ]"(space). | ||||
| // Note: it hasn't support windows yet, contribute is welcome. | ||||
| func ColorLogS(format string, a ...interface{}) string { | ||||
| 	log := fmt.Sprintf(format, a...) | ||||
|  | ||||
| 	var clog string | ||||
|  | ||||
| 	if runtime.GOOS != "windows" { | ||||
| 		// 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) | ||||
|  | ||||
| 	} else { | ||||
| 		// Level. | ||||
| 		i := strings.Index(log, "]") | ||||
| 		if log[0] == '[' && i > -1 { | ||||
| 			clog += "[" + log[1:i] + "]" | ||||
| 		} | ||||
|  | ||||
| 		log = log[i+1:] | ||||
|  | ||||
| 		// Error. | ||||
| 		log = strings.Replace(log, "[ ", "[", -1) | ||||
| 		log = strings.Replace(log, " ]", "]", -1) | ||||
|  | ||||
| 		// Path. | ||||
| 		log = strings.Replace(log, "( ", "(", -1) | ||||
| 		log = strings.Replace(log, " )", ")", -1) | ||||
|  | ||||
| 		// Highlights. | ||||
| 		log = strings.Replace(log, "# ", "", -1) | ||||
| 		log = strings.Replace(log, " #", "", -1) | ||||
| 	} | ||||
| 	return clog + log | ||||
| } | ||||
|  | ||||
| // ColorLog prints colored log to stdout. | ||||
| // See color rules in function 'ColorLogS'. | ||||
| func ColorLog(format string, a ...interface{}) { | ||||
| 	fmt.Print(ColorLogS(format, a...)) | ||||
| } | ||||
		Reference in New Issue
	
	Block a user