aboutsummaryrefslogtreecommitdiffstats
path: root/src/exercises/list.go
diff options
context:
space:
mode:
authorMaurĂ­cio Antunes <mauricio.abreua@gmail.com>2022-10-29 22:38:17 -0300
committerMaurĂ­cio Antunes <mauricio.abreua@gmail.com>2022-10-29 22:38:17 -0300
commit381a0c42a89a155c59e92b269b6a5318d95fc618 (patch)
tree81960aebe6c8c4642d0c5cff5bf210bfccd2c6b8 /src/exercises/list.go
parent5aa67b2a25274cda2b04e3090374f315edad3877 (diff)
feat: list exercises
Diffstat (limited to 'src/exercises/list.go')
-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
+}