Simpler list view (#382)
* Simpler list view * lint * readding graph viz with -g/--graph Co-authored-by: Leonid Shamis <lshamis@bob.localdomain> Co-authored-by: Casey Lee <cplee@nektos.com>
This commit is contained in:
parent
014d71af43
commit
644bc2b635
|
@ -3,6 +3,7 @@ on: [push, pull_request]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
lint:
|
lint:
|
||||||
|
name: Lint
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
@ -13,6 +14,7 @@ jobs:
|
||||||
CGO_ENABLED: 0
|
CGO_ENABLED: 0
|
||||||
|
|
||||||
test:
|
test:
|
||||||
|
name: Test
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
@ -24,6 +26,7 @@ jobs:
|
||||||
CGO_ENABLED: 0
|
CGO_ENABLED: 0
|
||||||
|
|
||||||
snapshot:
|
snapshot:
|
||||||
|
name: Snapshot
|
||||||
if: ${{ github.event_name == 'pull_request' }}
|
if: ${{ github.event_name == 'pull_request' }}
|
||||||
needs:
|
needs:
|
||||||
- lint
|
- lint
|
||||||
|
@ -40,6 +43,7 @@ jobs:
|
||||||
SNAPSHOT_VERSION: "v0.0.0"
|
SNAPSHOT_VERSION: "v0.0.0"
|
||||||
|
|
||||||
release:
|
release:
|
||||||
|
name: Release
|
||||||
if: startsWith(github.ref, 'refs/tags/v')
|
if: startsWith(github.ref, 'refs/tags/v')
|
||||||
needs:
|
needs:
|
||||||
- lint
|
- lint
|
||||||
|
|
|
@ -5,6 +5,7 @@ on:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
stale:
|
stale:
|
||||||
|
name: Stale
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/stale@v3
|
- uses: actions/stale@v3
|
||||||
|
|
|
@ -0,0 +1,57 @@
|
||||||
|
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
|
||||||
|
}
|
10
cmd/root.go
10
cmd/root.go
|
@ -34,6 +34,7 @@ func Execute(ctx context.Context, version string) {
|
||||||
}
|
}
|
||||||
rootCmd.Flags().BoolP("watch", "w", false, "watch the contents of the local repo and run when files change")
|
rootCmd.Flags().BoolP("watch", "w", false, "watch the contents of the local repo and run when files change")
|
||||||
rootCmd.Flags().BoolP("list", "l", false, "list workflows")
|
rootCmd.Flags().BoolP("list", "l", false, "list workflows")
|
||||||
|
rootCmd.Flags().BoolP("graph", "g", false, "draw workflows")
|
||||||
rootCmd.Flags().StringP("job", "j", "", "run job")
|
rootCmd.Flags().StringP("job", "j", "", "run job")
|
||||||
rootCmd.Flags().StringArrayVarP(&input.secrets, "secret", "s", []string{}, "secret to make available to actions with optional value (e.g. -s mysecret=foo or -s mysecret)")
|
rootCmd.Flags().StringArrayVarP(&input.secrets, "secret", "s", []string{}, "secret to make available to actions with optional value (e.g. -s mysecret=foo or -s mysecret)")
|
||||||
rootCmd.Flags().StringArrayVarP(&input.platforms, "platform", "P", []string{}, "custom image to use per platform (e.g. -P ubuntu-18.04=nektos/act-environments-ubuntu:18.04)")
|
rootCmd.Flags().StringArrayVarP(&input.platforms, "platform", "P", []string{}, "custom image to use per platform (e.g. -P ubuntu-18.04=nektos/act-environments-ubuntu:18.04)")
|
||||||
|
@ -150,9 +151,16 @@ func newRunCommand(ctx context.Context, input *Input) func(*cobra.Command, []str
|
||||||
plan = planner.PlanEvent(eventName)
|
plan = planner.PlanEvent(eventName)
|
||||||
}
|
}
|
||||||
|
|
||||||
// check if we should just print the graph
|
// check if we should just list the workflows
|
||||||
if list, err := cmd.Flags().GetBool("list"); err != nil {
|
if list, err := cmd.Flags().GetBool("list"); err != nil {
|
||||||
return err
|
return err
|
||||||
|
} else if list {
|
||||||
|
return printList(plan)
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if we should just print the graph
|
||||||
|
if list, err := cmd.Flags().GetBool("graph"); err != nil {
|
||||||
|
return err
|
||||||
} else if list {
|
} else if list {
|
||||||
return drawGraph(plan)
|
return drawGraph(plan)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue