HamzaHassanain/polyman
Simplify Config.json by Auto-Deriving Names from File Paths
Open
#12 opened on Nov 24, 2025
bugdocumentationenhancementgood first issuehelp wanted
Repository metrics
- Stars
- (33 stars)
- PR merge metrics
- (PR metrics pending)
Description
Currently, the Config.json file requires explicitly specifying a name field for solutions, generators, checkers, and validators, even though this name can be automatically derived from the file path. This creates unnecessary verbosity, increases the chance of typos/inconsistencies, and makes configuration more error-prone.
Current Configuration (Verbose):
{
"solutions": [
{
"name": "main",
"source": "./solutions/main.cpp",
"tag": "MA",
"sourceType": "cpp.g++17"
},
{
"name": "correct2",
"source": "./solutions/correct2.java",
"tag": "OK",
"sourceType": "java.11"
}
],
"generators": [
{
"name": "gen-random",
"source": "./generators/gen-random.cpp"
},
{
"name": "gen-edge",
"source": "./generators/gen-edge.cpp"
}
],
"validator": {
"name": "validator",
"source": "./validator/validator.cpp"
}
}
Derived names (automatic):
- ./solutions/main.cpp → name: main
- ./solutions/correct2.java → name: correct2
- ./generators/gen-random.cpp → name: gen-random
- ./validator/validator.cpp → name: validator
Keep name as optional
- If name is present, use it (backward compatible)
- If name is absent, derive it from source
- Display deprecation warning if name is specified
interface LocalSolution {
name?: string; // Optional now
source: string;
tag: SolutionTag;
sourceType: SolutionSourceType;
}
function getSolutionName(solution: LocalSolution): string {
if (solution.name) {
// Deprecated: show warning
console.warn(`[DEPRECATED] Explicit 'name' field is no longer needed for ${solution.source}`);
return solution.name;
}
return deriveNameFromPath(solution.source);
}