From 96065fe8079538afe439da8ce2e65149dd992b55 Mon Sep 17 00:00:00 2001
From: Dan Sosedoff <dan.sosedoff@gmail.com>
Date: Fri, 15 Feb 2019 10:34:19 -0600
Subject: [PATCH] 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 {