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:
lshamis 2020-10-12 10:26:22 -07:00 committed by GitHub
parent 014d71af43
commit 644bc2b635
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 71 additions and 1 deletions

View File

@ -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

View File

@ -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

57
cmd/list.go Normal file
View File

@ -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
}

View File

@ -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)
} }