scai
Version:
> AI-powered CLI tool for commit messages **and** pull request reviews — using local models.
53 lines (52 loc) • 1.32 kB
JavaScript
import path from 'path';
export function detectFileType(filepath) {
const ext = path.extname(filepath).toLowerCase();
const map = {
// Programming languages
'.ts': 'typescript',
'.tsx': 'typescript',
'.js': 'javascript',
'.jsx': 'javascript',
'.java': 'java',
'.py': 'python',
'.rb': 'ruby',
'.php': 'php',
'.go': 'go',
'.rs': 'rust',
'.c': 'c',
'.cpp': 'cpp',
'.cs': 'csharp',
'.swift': 'swift',
'.kt': 'kotlin',
'.scala': 'scala',
// Markup & docs
'.md': 'markdown',
'.html': 'html',
'.htm': 'html',
'.xml': 'xml',
'.json': 'json',
'.yaml': 'yaml',
'.yml': 'yaml',
// Configs
'.ini': 'config',
'.toml': 'config',
'.env': 'config',
// Data
'.sql': 'sql',
'.csv': 'csv',
'.tsv': 'tsv',
// Text & writing
'.txt': 'text',
'.log': 'log',
'.rst': 'text',
// Office
'.doc': 'word',
'.docx': 'word',
'.pdf': 'pdf',
'.ppt': 'powerpoint',
'.pptx': 'powerpoint',
'.xls': 'excel',
'.xlsx': 'excel',
};
return map[ext] || ext.replace('.', '') || 'unknown';
}