From 96065fe8079538afe439da8ce2e65149dd992b55 Mon Sep 17 00:00:00 2001 From: Dan Sosedoff Date: Fri, 15 Feb 2019 10:34:19 -0600 Subject: [PATCH 1/2] Detect workflow event type --- actions/runner.go | 9 --------- cmd/root.go | 18 +++++++++++++++--- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/actions/runner.go b/actions/runner.go index f650e67..894d8c7 100644 --- a/actions/runner.go +++ b/actions/runner.go @@ -55,18 +55,9 @@ func (runner *runnerImpl) setupWorkflows() error { if err != nil { return err } - defer workflowReader.Close() runner.workflowConfig, err = parser.Parse(workflowReader) - /* - if err != nil { - parserError := err.(*parser.ParserError) - for _, e := range parserError.Errors { - fmt.Fprintln(os.Stderr, e) - } - } - */ return err } diff --git a/cmd/root.go b/cmd/root.go index 06138f7..e1dcd9c 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -50,9 +50,7 @@ func setupLogging(cmd *cobra.Command, args []string) { func newRunCommand(runnerConfig *actions.RunnerConfig) func(*cobra.Command, []string) error { return func(cmd *cobra.Command, args []string) error { - if len(args) == 0 { - runnerConfig.EventName = "push" - } else { + if len(args) > 0 { runnerConfig.EventName = args[0] } @@ -77,6 +75,20 @@ func parseAndRun(cmd *cobra.Command, runnerConfig *actions.RunnerConfig) error { } defer runner.Close() + // set default event type if we only have a single workflow in the file. + // this way user dont have to specify the event. + if runnerConfig.EventName == "" { + if events := runner.ListEvents(); len(events) == 1 { + log.Debugf("Using detected workflow event: %s", events[0]) + runnerConfig.EventName = events[0] + } + } + + // fall back to default event name if we could not detect one. + if runnerConfig.EventName == "" { + runnerConfig.EventName = "push" + } + // check if we should just print the graph list, err := cmd.Flags().GetBool("list") if err != nil { From ff2c631d402c48753089d2c2672823544321fb76 Mon Sep 17 00:00:00 2001 From: Dan Sosedoff Date: Fri, 15 Feb 2019 10:44:36 -0600 Subject: [PATCH 2/2] Add extra test for event detection --- actions/runner_test.go | 1 + actions/testdata/detect_event.workflow | 9 +++++++++ 2 files changed, 10 insertions(+) create mode 100644 actions/testdata/detect_event.workflow diff --git a/actions/runner_test.go b/actions/runner_test.go index aea55f1..92ef52c 100644 --- a/actions/runner_test.go +++ b/actions/runner_test.go @@ -24,6 +24,7 @@ func TestRunEvent(t *testing.T) { {"regex.workflow", "push", "exit with `NEUTRAL`: 78"}, {"gitref.workflow", "push", ""}, {"env.workflow", "push", ""}, + {"detect_event.workflow", "", ""}, } log.SetLevel(log.DebugLevel) diff --git a/actions/testdata/detect_event.workflow b/actions/testdata/detect_event.workflow new file mode 100644 index 0000000..a693395 --- /dev/null +++ b/actions/testdata/detect_event.workflow @@ -0,0 +1,9 @@ +workflow "detect-event" { + on = "pull_request" + resolves = ["build"] +} + +action "build" { + uses = "./action1" + args = "echo 'build'" +} \ No newline at end of file