HamzaHassanain / HamzaHassanain/polyman

Simplify Config.json by Auto-Deriving Names from File Paths

Open
#12 0 comments 0 reactions 0 assignees View on GitHub
bug documentation enhancement good first issue help wanted
Dominant language
TypeScript
Stars
35
Forks
3
PR merge metrics
No merged PRs in 30d

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

```json
{
"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

```ts
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);
}
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.