refactor: hoist config handling in root command prerun

This commit is contained in:
Marc 2024-08-02 17:32:41 -04:00
parent bed10050dd
commit d519aa4cd1
Signed by: marc
GPG key ID: 048E042F22B5DC79
3 changed files with 25 additions and 12 deletions

View file

@ -8,13 +8,7 @@ import (
workflow "runner/internal/workflow" workflow "runner/internal/workflow"
) )
func ExecuteWorkflow(configurationPath string, workflowFile string) error { func ExecuteWorkflow(configuration Configuration, workflowFile string) error {
configuration, err := NewConfigFromFile(configurationPath)
if err != nil {
return err
}
driver, err := runner.NewDriver(configuration.Containers.Driver) driver, err := runner.NewDriver(configuration.Containers.Driver)
if err != nil { if err != nil {

View file

@ -6,7 +6,7 @@ import (
workflow "runner/internal/workflow" workflow "runner/internal/workflow"
) )
func ValidateWorkflow(configurationPath string, workflowPath string) error { func ValidateWorkflow(configuration Configuration, workflowPath string) error {
workflow, err := workflow.FromYamlFile(workflowPath) workflow, err := workflow.FromYamlFile(workflowPath)
if err != nil { if err != nil {

27
main.go
View file

@ -1,6 +1,7 @@
package main package main
import ( import (
"context"
"github.com/spf13/cobra" "github.com/spf13/cobra"
"log" "log"
"os" "os"
@ -9,6 +10,24 @@ import (
var cli = &cobra.Command{ var cli = &cobra.Command{
Use: "runner", Use: "runner",
PersistentPreRun: func(cmd *cobra.Command, args []string) {
configPath, err := cmd.Flags().GetString("config")
ctx := cmd.Context()
if err == nil {
configuration, err := commands.NewConfigFromFile(configPath)
if err != nil {
log.Printf("Failed to parse configuration (%s)!", configPath)
os.Exit(1)
}
ctx = context.WithValue(ctx, "config", configuration)
}
cmd.SetContext(ctx)
},
} }
var execute = &cobra.Command{ var execute = &cobra.Command{
@ -16,9 +35,9 @@ var execute = &cobra.Command{
Short: "Executes the provided workflow.", Short: "Executes the provided workflow.",
Args: cobra.MinimumNArgs(1), Args: cobra.MinimumNArgs(1),
Run: func(cmd *cobra.Command, args []string) { Run: func(cmd *cobra.Command, args []string) {
configPath, _ := cmd.Flags().GetString("config") config := cmd.Context().Value("config").(*commands.Configuration)
if err := commands.ExecuteWorkflow(configPath, args[0]); err != nil { if err := commands.ExecuteWorkflow(*config, args[0]); err != nil {
log.Printf("Failure: %s", err) log.Printf("Failure: %s", err)
os.Exit(1) os.Exit(1)
} }
@ -30,9 +49,9 @@ var validate = &cobra.Command{
Short: "Validates the structure of the provided workflow.", Short: "Validates the structure of the provided workflow.",
Args: cobra.MinimumNArgs(1), Args: cobra.MinimumNArgs(1),
Run: func(cmd *cobra.Command, args []string) { Run: func(cmd *cobra.Command, args []string) {
configPath, _ := cmd.Flags().GetString("config") config := cmd.Context().Value("config").(*commands.Configuration)
if err := commands.ValidateWorkflow(configPath, args[0]); err != nil { if err := commands.ValidateWorkflow(*config, args[0]); err != nil {
log.Printf("Failure: %s", err) log.Printf("Failure: %s", err)
os.Exit(1) os.Exit(1)
} }