diff options
author | MaurĂcio Antunes <mauricio.abreua@gmail.com> | 2022-10-29 23:20:03 -0300 |
---|---|---|
committer | MaurĂcio Antunes <mauricio.abreua@gmail.com> | 2022-10-29 23:33:42 -0300 |
commit | 77736509fbd2c4e75b08cdc6705d0130f7a5e1bf (patch) | |
tree | 570d4a26011b9eaf4c2b34b507fa40ddabc0274a /src/exercises/list.go | |
parent | cc401c9e06c6d1776e3ecf773a45be3420b7d677 (diff) |
feat: find exercise from toml
Diffstat (limited to 'src/exercises/list.go')
-rw-r--r-- | src/exercises/list.go | 35 |
1 files changed, 17 insertions, 18 deletions
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 +} |