UNPKG

aicm

Version:

A TypeScript CLI tool for managing AI IDE rules across different projects and teams

54 lines (53 loc) 1.97 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.findAicmFiles = findAicmFiles; exports.discoverPackagesWithAicm = discoverPackagesWithAicm; const child_process_1 = require("child_process"); const path_1 = __importDefault(require("path")); const config_1 = require("./config"); /** * Discover all packages with aicm configurations using git ls-files */ function findAicmFiles(rootDir) { try { const output = (0, child_process_1.execSync)("git ls-files --cached --others --exclude-standard aicm.json **/aicm.json", { cwd: rootDir, encoding: "utf8", }); return output .trim() .split("\n") .filter(Boolean) .map((file) => path_1.default.resolve(rootDir, file)); } catch (_a) { // Fallback to manual search if git is not available return []; } } /** * Discover all packages with aicm configurations */ async function discoverPackagesWithAicm(rootDir) { const aicmFiles = findAicmFiles(rootDir); const packages = []; for (const aicmFile of aicmFiles) { const packageDir = path_1.default.dirname(aicmFile); const relativePath = path_1.default.relative(rootDir, packageDir); // Normalize to forward slashes for cross-platform compatibility const normalizedRelativePath = relativePath.replace(/\\/g, "/"); const config = await (0, config_1.loadConfig)(packageDir); if (config) { packages.push({ relativePath: normalizedRelativePath || ".", absolutePath: packageDir, config, }); } } // Sort packages by relativePath for deterministic order return packages.sort((a, b) => a.relativePath.localeCompare(b.relativePath)); }