aboutsummaryrefslogtreecommitdiffstats
path: root/src/exercises/list.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/exercises/list.go')
-rw-r--r--src/exercises/list.go35
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
+}