aicm
Version:
A TypeScript CLI tool for managing AI IDE rules across different projects and teams
50 lines (49 loc) • 2.46 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.initCommand = initCommand;
const fs_extra_1 = __importDefault(require("fs-extra"));
const path_1 = __importDefault(require("path"));
const chalk_1 = __importDefault(require("chalk"));
const defaultConfig = {
rootDir: "./",
targets: ["cursor"],
};
function initCommand() {
const configPath = path_1.default.join(process.cwd(), "aicm.json");
if (fs_extra_1.default.existsSync(configPath)) {
console.log(chalk_1.default.yellow("Configuration file already exists!"));
return;
}
try {
// Create standard directory structure
const dirs = ["rules", "commands", "assets", "hooks"];
for (const dir of dirs) {
const dirPath = path_1.default.join(process.cwd(), dir);
if (!fs_extra_1.default.existsSync(dirPath)) {
fs_extra_1.default.mkdirSync(dirPath, { recursive: true });
}
}
// Create placeholder file in rules directory
const rulesReadmePath = path_1.default.join(process.cwd(), "rules", ".gitkeep");
if (!fs_extra_1.default.existsSync(rulesReadmePath)) {
fs_extra_1.default.writeFileSync(rulesReadmePath, "# Place your .mdc rule files here\n");
}
fs_extra_1.default.writeJsonSync(configPath, defaultConfig, { spaces: 2 });
console.log(`Configuration file location: ${chalk_1.default.blue(configPath)}`);
console.log(`\nCreated directory structure:`);
console.log(` - ${chalk_1.default.blue("rules/")} for rule files (.mdc)`);
console.log(` - ${chalk_1.default.blue("commands/")} for command files (.md)`);
console.log(` - ${chalk_1.default.blue("assets/")} for auxiliary files`);
console.log(` - ${chalk_1.default.blue("hooks/")} for hook scripts`);
console.log(`\nNext steps:`);
console.log(` 1. Add your rule files to ${chalk_1.default.blue("rules/")} directory`);
console.log(` 2. Edit ${chalk_1.default.blue("aicm.json")} to configure presets if needed`);
console.log(` 3. Run ${chalk_1.default.blue("npx aicm install")} to install rules & mcps`);
}
catch (error) {
console.error(chalk_1.default.red("Error creating configuration file:"), error);
}
}