aboutsummaryrefslogtreecommitdiffstats
path: root/src/exercises/list.go
diff options
context:
space:
mode:
authorMaurĂ­cio Antunes <mauricio.abreua@gmail.com>2022-10-29 23:20:03 -0300
committerMaurĂ­cio Antunes <mauricio.abreua@gmail.com>2022-10-29 23:33:42 -0300
commit77736509fbd2c4e75b08cdc6705d0130f7a5e1bf (patch)
tree570d4a26011b9eaf4c2b34b507fa40ddabc0274a /src/exercises/list.go
parentcc401c9e06c6d1776e3ecf773a45be3420b7d677 (diff)
feat: find exercise from toml
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
+}