Skip to content

[Enhancement] Support filename-based languages (Makefile, Dockerfile) #16

@ngmks

Description

@ngmks

🏷️ Priorité : BASSE | Type : Enhancement

Contexte

Le mapping CODE_EXTENSIONS dans chunking_utils.py utilise uniquement l'extension de fichier pour détecter le langage. Les fichiers identifiés par leur nom complet (pas d'extension) ne sont pas supportés.

Référence : commentaire existant lignes 194-195 de chunking_utils.py.

Fichiers non supportés actuellement

Fichier Langage Fréquence
Makefile make Très courant
Dockerfile dockerfile Très courant
CMakeLists.txt cmake Courant (C/C++)
Jenkinsfile groovy Courant (CI)
.gitignore gitignore Très courant
Vagrantfile ruby Moins courant

Correction attendue

1. Ajouter un mapping filename-based

# chunking_utils.py, après CODE_EXTENSIONS :
FILENAME_LANGUAGES = {
    "Makefile": "make",
    "Dockerfile": "dockerfile",
    "CMakeLists.txt": "cmake",
    "Jenkinsfile": "groovy",
}

2. Modifier get_language_from_extension()

def get_language_from_path(file_path: str) -> Optional[str]:
    filename = Path(file_path).name
    # D'abord chercher par nom exact
    if filename in FILENAME_LANGUAGES:
        return FILENAME_LANGUAGES[filename]
    # Puis par extension
    ext = Path(file_path).suffix.lower()
    return CODE_EXTENSIONS.get(ext)

3. Vérifier le support tree-sitter

Pas tous ces langages ont un parser tree-sitter. Vérifier dans tree-sitter-language-pack avant d'ajouter. Si pas de parser → fallback sur traditional chunking (déjà géré).

Critères de succès

  • Mapping filename ajouté
  • get_language_from_extension() vérifie le nom complet d'abord
  • Tests pour les nouveaux fichiers
  • Backward compatible (extension-based fonctionne toujours)
  • Fallback gracieux si tree-sitter n'a pas le parser

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions