github.com/ActiveState/cli@v0.0.0-20240508170324-6801f60cd051/scripts/internal/workflow-controllers/print.go (about) 1 package wc 2 3 import ( 4 "fmt" 5 "strings" 6 ) 7 8 var printDepth = 0 9 10 func sprint(depth int, msg string, args ...interface{}) string { 11 msg = fmt.Sprintf(msg, args...) 12 prefix := "" 13 if depth > 0 { 14 prefix = "|- " 15 } 16 indent := strings.Repeat(" ", depth) 17 msg = strings.Replace(msg, "\n", "\n "+indent, -1) 18 return fmt.Sprintf(indent + prefix + msg) 19 } 20 21 func Print(msg string, args ...interface{}) { 22 fmt.Println(sprint(printDepth, msg, args...)) 23 } 24 25 func PrintStart(description string, args ...interface{}) func() { 26 Print(description+"..", args...) 27 printDepth++ 28 return func() { 29 printDepth-- 30 Print("Done\n") 31 } 32 }