aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDiego Pereira <diegop@pm.me>2024-03-31 21:26:17 -0300
committerMauricio Antunes <mauricio.abreua@gmail.com>2024-04-01 09:45:35 -0300
commit290fa9e5699f821b61b2c8f674c7523e66daf699 (patch)
tree58ec28573cb43fb7aae42ca4d1387f2020e1aad6
parenta5578c44732ee43611eff8799ed2fa0a5569ceff (diff)
chore: improve output
-rw-r--r--golings/cmd/print.go4
-rw-r--r--golings/exercises/exercises_suite_test.go4
-rw-r--r--golings/exercises/list.go9
3 files changed, 11 insertions, 6 deletions
diff --git a/golings/cmd/print.go b/golings/cmd/print.go
index 89237ac..8a8d0ef 100644
--- a/golings/cmd/print.go
+++ b/golings/cmd/print.go
@@ -32,11 +32,11 @@ func PrintList(infoFile string) {
func RunNextExercise(infoFile string) {
ClearScreen()
- progress, err:= exercises.Progress(infoFile)
+ progress, done, total, err:= exercises.Progress(infoFile)
if err != nil {
fmt.Fprintln(os.Stderr, err)
} else {
- color.Blue("%.2f%% done.\n\n", progress * 100)
+ color.Blue("Progress: %d/%d (%.2f%%)\n\n", done, total, progress * 100)
}
exercise, err := exercises.NextPending(infoFile)
diff --git a/golings/exercises/exercises_suite_test.go b/golings/exercises/exercises_suite_test.go
index d17fd0d..25f91b0 100644
--- a/golings/exercises/exercises_suite_test.go
+++ b/golings/exercises/exercises_suite_test.go
@@ -95,9 +95,11 @@ var _ = Describe("Exercises", func() {
Describe("Reporting progress", func() {
When("half exercises pending", func() {
It("reports 50%% progress", func() {
- progress, err := exercises.Progress("../fixtures/progress/info.toml")
+ progress, done, total, err := exercises.Progress("../fixtures/progress/info.toml")
Expect(err).NotTo(HaveOccurred())
+ Expect(done).To(Equal(1))
+ Expect(total).To(Equal(2))
Expect(progress).To(Equal(float32(0.5)))
})
})
diff --git a/golings/exercises/list.go b/golings/exercises/list.go
index 0c477a1..762389f 100644
--- a/golings/exercises/list.go
+++ b/golings/exercises/list.go
@@ -59,10 +59,10 @@ func Find(exercise string, infoFile string) (Exercise, error) {
return Exercise{}, ErrExerciseNotFound
}
-func Progress(infoFile string) (float32, error) {
+func Progress(infoFile string) (float32, int, int, error) {
allExercises, err := List(infoFile)
if err != nil {
- return 0.0, err
+ return 0.0, 0, 0, err
}
done := []Exercise{}
for _, exercise := range allExercises {
@@ -71,5 +71,8 @@ func Progress(infoFile string) (float32, error) {
}
}
- return float32(len(done)) / float32(len(allExercises)), nil
+ totalDone := len(done)
+ total := len(allExercises)
+
+ return float32(totalDone) / float32(total), totalDone, total, nil
}