From 77736509fbd2c4e75b08cdc6705d0130f7a5e1bf Mon Sep 17 00:00:00 2001 From: MaurĂ­cio Antunes Date: Sat, 29 Oct 2022 23:20:03 -0300 Subject: feat: find exercise from toml --- src/exercises/list.go | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) (limited to 'src/exercises/list.go') diff --git a/src/exercises/list.go b/src/exercises/list.go index 3719527..c0c7261 100644 --- a/src/exercises/list.go +++ b/src/exercises/list.go @@ -1,29 +1,13 @@ package exercises import ( + "errors" "os" "github.com/pelletier/go-toml/v2" ) -type State int - -const ( - Pending State = iota + 1 - Done -) - -func (s State) String() string { - return [...]string{"Pending", "Done"}[s-1] -} - -type Exercise struct { - Name string - Path string - Mode string - Hint string - State State -} +var ErrExerciseNotFound = errors.New("exercise not found") type Info struct { Exercises []Exercise @@ -43,3 +27,18 @@ func List() ([]Exercise, error) { return info.Exercises, nil } + +func Find(exercise string) (Exercise, error) { + exs, err := List() + if err != nil { + return Exercise{}, err + } + + for _, ex := range exs { + if ex.Name == exercise { + return ex, nil + } + } + + return Exercise{}, ErrExerciseNotFound +} -- cgit v1.2.3-70-g09d2