diff --git a/packages/vjudge/src/index.ts b/packages/vjudge/src/index.ts index 905e4dd62..7156b4ec2 100644 --- a/packages/vjudge/src/index.ts +++ b/packages/vjudge/src/index.ts @@ -219,9 +219,15 @@ class VJudgeService extends Service { } async updateLangs(provider: string, mapping: Record>) { - const config = yaml.load(SystemModel.get('hydrooj.langs')); + const config = yaml.load(SystemModel.get('hydrooj.langs')) as Record>; const old = yaml.dump(config); + const existingMappings: Set = new Set(); + for (const key in config) { + const target = config[key]?.validAs?.[provider]; + if (target) existingMappings.add(target); + } for (const key in mapping) { + if (existingMappings.has(mapping[key].key)) continue; config[key] ||= { execute: '/bin/echo For remote judge only', hidden: true,