admin/sync: new error on flags import

This commit is contained in:
nemunaire 2017-12-17 16:10:59 +01:00
parent a0a2313924
commit eee1558dd9

View File

@ -4,10 +4,20 @@ import (
"fmt"
"path"
"strings"
"unicode"
"srs.epita.fr/fic-server/libfic"
)
func isFullGraphic(s string) bool {
for _, c := range s {
if !unicode.IsGraphic(c) {
return false
}
}
return true
}
func SyncExerciceKeys(i Importer, exercice fic.Exercice) []string {
var errs []string
@ -23,16 +33,21 @@ func SyncExerciceKeys(i Importer, exercice fic.Exercice) []string {
continue
}
var label, rawkey string
if len(flag_splt) == 1 {
rawkey = flag_splt[0]
} else {
label = flag_splt[0]
rawkey = flag_splt[1]
errs = append(errs, fmt.Sprintf("%q: error in flags file at line %d: no separator found", path.Base(exercice.Path), nline + 1))
continue
}
if len(label) == 0 {
var label, rawkey string
if len(flag_splt[0]) == 0 {
label = "Flag"
} else {
label = flag_splt[0]
}
rawkey = flag_splt[1]
if !isFullGraphic(rawkey) {
errs = append(errs, fmt.Sprintf("%q: WARNING in flags file at line %d: non-printable characters in flag, is this really expected?", path.Base(exercice.Path), nline + 1))
}
if _, err := exercice.AddRawKey(label, rawkey); err != nil {
@ -104,6 +119,11 @@ func SyncExerciceMCQ(i Importer, exercice fic.Exercice) []string {
continue
}
if len(quest) < 2 {
errs = append(errs, fmt.Sprintf("%q: error in mcq file at line %d: missing label", path.Base(exercice.Path), nline + 1))
continue
}
if _, err := flag.AddEntry(choice[1:], choice[0] == 49); err != nil {
errs = append(errs, fmt.Sprintf("%q: error in mcq file at line %d,%d: %s", path.Base(exercice.Path), nline + 1, cid, err))
continue