UNPKG

@codewithmehmet/paul-cli

Version:

Intelligent project file scanner and Git change tracker with interactive interface

40 lines (37 loc) 1.45 kB
import fs from 'fs'; import path from 'path'; import ignore from 'ignore'; export function createIgnoreFilter(rootPath) { const ig = ignore(); // Default rules ig.add(['.git', 'node_modules']); // Read .gitignore const gitignorePath = path.join(rootPath, '.gitignore'); if (fs.existsSync(gitignorePath)) { try { const gitignoreContent = fs.readFileSync(gitignorePath, 'utf8'); const rules = gitignoreContent.split('\n').map(line => line.trim()).filter(line => line && !line.startsWith('#')); ig.add(rules); } catch (error) { console.warn('Could not read .gitignore file'); } } // Read .scanignore (or .paulignore for paul-cli) const scanignorePath = path.join(rootPath, '.scanignore'); const paulignorePath = path.join(rootPath, '.paulignore'); const ignorePath = fs.existsSync(paulignorePath) ? paulignorePath : scanignorePath; if (fs.existsSync(ignorePath)) { try { const ignoreContent = fs.readFileSync(ignorePath, 'utf8'); const rules = ignoreContent.split('\n').map(line => line.trim()).filter(line => line && !line.startsWith('#')); ig.add(rules); } catch (error) { console.warn(`Could not read ${path.basename(ignorePath)} file`); } } return ig; } export function shouldIgnorePath(ignoreFilter, rootPath, fullPath) { const relativePath = path.relative(rootPath, fullPath); return ignoreFilter.ignores(relativePath.replace(/\\/g, '/')); }