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))