github.1485827954.workers.dev/nektos/act@v0.2.63/cmd/graph.go (about)

     1  package cmd
     2  
     3  import (
     4  	"os"
     5  
     6  	"github.com/nektos/act/pkg/common"
     7  	"github.com/nektos/act/pkg/model"
     8  )
     9  
    10  func drawGraph(plan *model.Plan) error {
    11  	drawings := make([]*common.Drawing, 0)
    12  
    13  	jobPen := common.NewPen(common.StyleSingleLine, 96)
    14  	arrowPen := common.NewPen(common.StyleNoLine, 97)
    15  	for i, stage := range plan.Stages {
    16  		if i > 0 {
    17  			drawings = append(drawings, arrowPen.DrawArrow())
    18  		}
    19  
    20  		ids := make([]string, 0)
    21  		for _, r := range stage.Runs {
    22  			ids = append(ids, r.String())
    23  		}
    24  		drawings = append(drawings, jobPen.DrawBoxes(ids...))
    25  	}
    26  
    27  	maxWidth := 0
    28  	for _, d := range drawings {
    29  		if d.GetWidth() > maxWidth {
    30  			maxWidth = d.GetWidth()
    31  		}
    32  	}
    33  
    34  	for _, d := range drawings {
    35  		d.Draw(os.Stdout, maxWidth)
    36  	}
    37  	return nil
    38  }