58 lines
1.1 KiB
Go
58 lines
1.1 KiB
Go
package cmd
|
|
|
|
import (
|
|
"fmt"
|
|
"strconv"
|
|
|
|
"github.com/nektos/act/pkg/model"
|
|
)
|
|
|
|
func printList(plan *model.Plan) error {
|
|
type lineInfoDef struct {
|
|
id string
|
|
stage string
|
|
name string
|
|
}
|
|
lineInfos := []lineInfoDef{}
|
|
|
|
header := lineInfoDef{
|
|
id: "ID",
|
|
stage: "Stage",
|
|
name: "Name",
|
|
}
|
|
|
|
idMaxWidth := len(header.id)
|
|
stageMaxWidth := len(header.stage)
|
|
nameMaxWidth := len(header.name)
|
|
|
|
for i, stage := range plan.Stages {
|
|
for _, r := range stage.Runs {
|
|
line := lineInfoDef{
|
|
id: r.JobID,
|
|
stage: strconv.Itoa(i),
|
|
name: r.String(),
|
|
}
|
|
lineInfos = append(lineInfos, line)
|
|
if idMaxWidth < len(line.id) {
|
|
idMaxWidth = len(line.id)
|
|
}
|
|
if stageMaxWidth < len(line.stage) {
|
|
stageMaxWidth = len(line.stage)
|
|
}
|
|
if nameMaxWidth < len(line.name) {
|
|
nameMaxWidth = len(line.name)
|
|
}
|
|
}
|
|
}
|
|
|
|
idMaxWidth += 2
|
|
stageMaxWidth += 2
|
|
nameMaxWidth += 2
|
|
|
|
fmt.Printf("%*s%*s%*s\n", -idMaxWidth, header.id, -stageMaxWidth, header.stage, -nameMaxWidth, header.name)
|
|
for _, line := range lineInfos {
|
|
fmt.Printf("%*s%*s%*s\n", -idMaxWidth, line.id, -stageMaxWidth, line.stage, -nameMaxWidth, line.name)
|
|
}
|
|
return nil
|
|
}
|