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  }