diff options
author | MaurĂcio Antunes <mauricio.abreua@gmail.com> | 2022-10-29 22:38:17 -0300 |
---|---|---|
committer | MaurĂcio Antunes <mauricio.abreua@gmail.com> | 2022-10-29 22:38:17 -0300 |
commit | 381a0c42a89a155c59e92b269b6a5318d95fc618 (patch) | |
tree | 81960aebe6c8c4642d0c5cff5bf210bfccd2c6b8 /src/exercises/list.go | |
parent | 5aa67b2a25274cda2b04e3090374f315edad3877 (diff) |
feat: list exercises
Diffstat (limited to 'src/exercises/list.go')
-rw-r--r-- | src/exercises/list.go | 45 |
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 +} |