aboutsummaryrefslogtreecommitdiffstats
path: root/src/exercises
diff options
context:
space:
mode:
Diffstat (limited to 'src/exercises')
-rw-r--r--src/exercises/list.go45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/exercises/list.go b/src/exercises/list.go
new file mode 100644
index 0000000..3719527
--- /dev/null
+++ b/src/exercises/list.go
@@ -0,0 +1,45 @@
+package exercises
+
+import (
+ "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
+}
+
+type Info struct {
+ Exercises []Exercise
+}
+
+func List() ([]Exercise, error) {
+ var info Info
+
+ data, err := os.ReadFile("info.toml")
+ if err != nil {
+ return info.Exercises, err
+ }
+
+ if err := toml.Unmarshal(data, &info); err != nil {
+ return info.Exercises, err
+ }
+
+ return info.Exercises, nil
+}