diff options
-rw-r--r-- | golings/cmd/run.go | 12 | ||||
-rw-r--r-- | golings/cmd/verify.go | 12 | ||||
-rw-r--r-- | golings/exercises/runner.go | 13 |
3 files changed, 17 insertions, 20 deletions
diff --git a/golings/cmd/run.go b/golings/cmd/run.go index 4fe2b8b..1efd905 100644 --- a/golings/cmd/run.go +++ b/golings/cmd/run.go @@ -34,13 +34,17 @@ func RunCmd(infoFile string) *cobra.Command { } }() - result, err := exercises.Run(args[0], infoFile) + exercise, err := exercises.Find(args[0], infoFile) + if errors.Is(err, exercises.ErrExerciseNotFound) { + color.White("No exercise found for '%s'", args[0]) + return err + } + + result, err := exercise.Run() spinner.Close() - if errors.Is(err, exercises.ErrExerciseNotFound) { - color.White("No exercise found for '%s'", args[0]) - } else if err != nil { + if err != nil { color.Cyan("Failed to compile the exercise %s\n\n", result.Exercise.Path) color.White("Check the output below: \n\n") color.Red(result.Err) diff --git a/golings/cmd/verify.go b/golings/cmd/verify.go index f713981..a4f6469 100644 --- a/golings/cmd/verify.go +++ b/golings/cmd/verify.go @@ -15,14 +15,14 @@ func VerifyCmd(infoFile string) *cobra.Command { Use: "verify", Short: "Verify all exercises", Run: func(cmd *cobra.Command, args []string) { - exs, err := exercises.List(infoFile) + allExercises, err := exercises.List(infoFile) if err != nil { color.Red(err.Error()) os.Exit(1) } bar := progressbar.NewOptions( - len(exs), + len(allExercises), progressbar.OptionSetWidth(50), progressbar.OptionEnableColorCodes(true), progressbar.OptionSetPredictTime(false), @@ -41,14 +41,14 @@ func VerifyCmd(infoFile string) *cobra.Command { os.Exit(1) } - for _, e := range exs { - bar.Describe(fmt.Sprintf("Running %s", e.Name)) - result, _ := exercises.Run(e.Name, "info.toml") + for _, exercise := range allExercises { + bar.Describe(fmt.Sprintf("Running %s", exercise.Name)) + result, _ := exercise.Run() bar.Add(1) // nolint if result.Err != "" { fmt.Print("\n\n") - color.Cyan("Failed to compile the exercise %s\n\n", e.Path) + color.Cyan("Failed to compile the exercise %s\n\n", exercise.Path) color.White("Check the output below: \n\n") color.Red(result.Err) color.Red(result.Out) diff --git a/golings/exercises/runner.go b/golings/exercises/runner.go index 5db1a48..c9597f6 100644 --- a/golings/exercises/runner.go +++ b/golings/exercises/runner.go @@ -12,21 +12,14 @@ type Result struct { Err string } -func Run(name string, infoFile string) (Result, error) { - exercise, err := Find(name, infoFile) - if err != nil { - return Result{}, err - } - - args := BuildArgs(exercise) +func (e Exercise) Run() (Result, error) { + args := BuildArgs(e) cmd := exec.Command("go", args...) var stdout, stderr bytes.Buffer cmd.Stdout = &stdout cmd.Stderr = &stderr - err = cmd.Run() - - return Result{Exercise: exercise, Out: stdout.String(), Err: stderr.String()}, err + return Result{Exercise: e, Out: stdout.String(), Err: stderr.String()}, cmd.Run() } func BuildArgs(e Exercise) []string { |