diff --git a/utils/fmt/fmt.go b/utils/fmt/fmt.go new file mode 100644 index 00000000..e79633af --- /dev/null +++ b/utils/fmt/fmt.go @@ -0,0 +1,77 @@ +package fmt + +import ( + "fmt" + "strings" + + "github.com/fatih/color" + "github.com/yaoapp/gou/process" +) + +// ProcessPrintf utils.fmt.Printf +func ProcessPrintf(process *process.Process) interface{} { + process.ValidateArgNums(1) + format := process.ArgsString(0) + if process.NumOfArgs() == 1 { + fmt.Print(format) + return nil + } + args := process.Args[1:] + fmt.Printf(format, args...) + return nil +} + +// ProcessColorPrintf utils.fmt.GreenPrintf +func ProcessColorPrintf(process *process.Process) interface{} { + process.ValidateArgNums(2) + colorName := strings.ToLower(process.ArgsString(0)) + format := process.ArgsString(1) + if process.NumOfArgs() == 1 { + fmt.Print(format) + return nil + } + + args := []interface{}{} + if process.NumOfArgs() > 2 { + args = process.Args[2:] + } + + switch colorName { + case "red": + fmt.Print(color.RedString(fmt.Sprintf(format, args...))) + case "green": + fmt.Print(color.GreenString(fmt.Sprintf(format, args...))) + case "yellow": + fmt.Print(color.YellowString(fmt.Sprintf(format, args...))) + case "blue": + fmt.Print(color.BlueString(fmt.Sprintf(format, args...))) + case "magenta": + fmt.Print(color.MagentaString(fmt.Sprintf(format, args...))) + case "cyan": + fmt.Print(color.CyanString(fmt.Sprintf(format, args...))) + case "white": + fmt.Print(color.WhiteString(fmt.Sprintf(format, args...))) + case "black": + fmt.Print(color.BlackString(fmt.Sprintf(format, args...))) + case "hired": + fmt.Print(color.HiRedString(fmt.Sprintf(format, args...))) + case "higreen": + fmt.Print(color.HiGreenString(fmt.Sprintf(format, args...))) + case "hiyellow": + fmt.Print(color.HiYellowString(fmt.Sprintf(format, args...))) + case "hiblue": + fmt.Print(color.HiBlueString(fmt.Sprintf(format, args...))) + case "himagenta": + fmt.Print(color.HiMagentaString(fmt.Sprintf(format, args...))) + case "hicyan": + fmt.Print(color.HiCyanString(fmt.Sprintf(format, args...))) + case "hiwhite": + fmt.Print(color.HiWhiteString(fmt.Sprintf(format, args...))) + case "hiblack": + fmt.Print(color.HiBlackString(fmt.Sprintf(format, args...))) + default: + fmt.Print(fmt.Sprintf(format, args...)) + } + + return nil +} diff --git a/utils/process.go b/utils/process.go index 52181748..16584c3d 100644 --- a/utils/process.go +++ b/utils/process.go @@ -3,6 +3,7 @@ package utils import ( "github.com/yaoapp/gou/process" "github.com/yaoapp/yao/utils/datetime" + "github.com/yaoapp/yao/utils/fmt" "github.com/yaoapp/yao/utils/json" "github.com/yaoapp/yao/utils/str" "github.com/yaoapp/yao/utils/tree" @@ -20,6 +21,8 @@ func Init() { // FMT process.Alias("xiang.helper.Print", "utils.fmt.Print") + process.Register("utils.fmt.Printf", fmt.ProcessPrintf) + process.Register("utils.fmt.ColorPrintf", fmt.ProcessColorPrintf) // ENV process.Alias("xiang.helper.EnvSet", "utils.env.Set")