UNPKG

alwaysai

Version:

The alwaysAI command-line interface (CLI)

34 lines (29 loc) 1.06 kB
import ignore from 'ignore'; import { existsSync, readFileSync } from 'fs'; import { logger } from './logger'; import { AAI_IGNORE_FILENAME } from '../constants'; import { Spawner } from './spawner'; import { join } from 'path'; function createIgnoreObject(rules: string[]) { return ignore().add(rules); } export function parseAaiIgnoreToArray(path?: string) { const aaiIgnorePath = path ?? AAI_IGNORE_FILENAME; if (!existsSync(aaiIgnorePath)) { logger.info(`${aaiIgnorePath} not found.`); return []; } return readFileSync(aaiIgnorePath, 'utf-8') .split('\n') .filter((line) => { const trimmed = line.trim(); return trimmed && !trimmed.startsWith('#'); }) .map((line) => line.trim()); } export async function getFilteredFileNames(source: Spawner, ignore: string[]) { const allFileNames = await source.walk(); const aaiIgnoreRules = parseAaiIgnoreToArray(); const ignoreChecker = createIgnoreObject(aaiIgnoreRules.concat(ignore)); return allFileNames.filter((file) => !ignoreChecker.ignores(join(file))); }