From 09c1111135b46ebf2f3a04a27f8767e77aae58fa Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Sun, 17 Mar 2024 17:58:11 +0100 Subject: [PATCH] repochecker: Ensure non-optional flag doesn't depend on optional one --- admin/sync/exercice_keys.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/admin/sync/exercice_keys.go b/admin/sync/exercice_keys.go index a0c02755..d022b23a 100644 --- a/admin/sync/exercice_keys.go +++ b/admin/sync/exercice_keys.go @@ -555,6 +555,15 @@ func CheckExerciceFlags(i Importer, exercice *fic.Exercice, files []string, exce } } + // Check dependency to flag optional flag + if fk, ok := flag.Flag.(*fic.FlagKey); ok && fk.BonusGain == 0 { + for _, nf := range flag.FlagsDeps { + if fk2, ok := flags[nf].Flag.(*fic.FlagKey); ok && fk2.BonusGain != 0 { + errs = multierr.Append(errs, NewFlagError(exercice, nil, flag.Line, fmt.Errorf("flag is not optional but depend on flag id=%d which is optional", nf))) + } + } + } + // Check dependency loop deps := flag.FlagsDeps for i := 0; i < len(deps); i++ {