From 332aa9093190d3fd69d8215865b2cf8ab849390e Mon Sep 17 00:00:00 2001 From: nemunaire Date: Wed, 10 Jan 2018 03:45:56 +0100 Subject: [PATCH] admin/sync: handle exercice gain from toml file: defines.txt --- admin/sync/exercice_defines.go | 20 ++++++++++++++++++++ admin/sync/exercices.go | 12 ++++++++++-- 2 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 admin/sync/exercice_defines.go diff --git a/admin/sync/exercice_defines.go b/admin/sync/exercice_defines.go new file mode 100644 index 00000000..b1930924 --- /dev/null +++ b/admin/sync/exercice_defines.go @@ -0,0 +1,20 @@ +package sync + +import ( + "path" + + "github.com/BurntSushi/toml" +) + +type ExerciceParams struct { + Gain int64 +} + +func parseExerciceParams(i Importer, exPath string) (p ExerciceParams, err error) { + var defs string + defs, err = getFileContent(i, path.Join(exPath, "defines.txt")) + + _, err = toml.Decode(defs, &p) + + return +} diff --git a/admin/sync/exercices.go b/admin/sync/exercices.go index 391ccfd4..adb613c5 100644 --- a/admin/sync/exercices.go +++ b/admin/sync/exercices.go @@ -78,8 +78,16 @@ func SyncExercices(i Importer, theme fic.Theme) []string { continue } - // TODO: calculate gain - var gain int64 = 42 + // Handle score gain + var gain int64 + if p, err := parseExerciceParams(i, path.Join(theme.Name, edir)); err != nil { + errs = append(errs, fmt.Sprintf("%q: defines.txt: %s", edir, err)) + continue + } else if p.Gain == 0 { + errs = append(errs, fmt.Sprintf("%q: defines.txt: Undefined gain for challenge", edir)) + } else { + gain = p.Gain + } // Handle video videoURI, err := findResolutionMovie(i, path.Join(theme.Name, edir))