fix: install Cursor rules as mdc files

This commit is contained in:
Affaan Mustafa
2026-04-12 23:32:39 -07:00
parent 9da8e5f6ac
commit 133e881ce0
4 changed files with 33 additions and 10 deletions

View File

@@ -40,6 +40,11 @@ module.exports = createInstallTargetAdapter({
repoRoot,
sourceRelativePath,
destinationDir: path.join(targetRoot, 'rules'),
destinationNameTransform(fileName) {
return fileName.endsWith('.md')
? `${fileName.slice(0, -3)}.mdc`
: fileName;
},
});
}

View File

@@ -181,7 +181,13 @@ function createNamespacedFlatRuleOperations(adapter, moduleId, sourceRelativePat
return operations;
}
function createFlatRuleOperations({ moduleId, repoRoot, sourceRelativePath, destinationDir }) {
function createFlatRuleOperations({
moduleId,
repoRoot,
sourceRelativePath,
destinationDir,
destinationNameTransform,
}) {
const normalizedSourcePath = normalizeRelativePath(sourceRelativePath);
const sourceRoot = path.join(repoRoot || '', normalizedSourcePath);
@@ -201,7 +207,10 @@ function createFlatRuleOperations({ moduleId, repoRoot, sourceRelativePath, dest
if (entry.isDirectory()) {
const relativeFiles = listRelativeFiles(entryPath);
for (const relativeFile of relativeFiles) {
const flattenedFileName = `${namespace}-${normalizeRelativePath(relativeFile).replace(/\//g, '-')}`;
const defaultFileName = `${namespace}-${normalizeRelativePath(relativeFile).replace(/\//g, '-')}`;
const flattenedFileName = typeof destinationNameTransform === 'function'
? destinationNameTransform(defaultFileName)
: defaultFileName;
operations.push(createManagedOperation({
moduleId,
sourceRelativePath: path.join(normalizedSourcePath, namespace, relativeFile),
@@ -210,10 +219,13 @@ function createFlatRuleOperations({ moduleId, repoRoot, sourceRelativePath, dest
}));
}
} else if (entry.isFile()) {
const destinationFileName = typeof destinationNameTransform === 'function'
? destinationNameTransform(entry.name)
: entry.name;
operations.push(createManagedOperation({
moduleId,
sourceRelativePath: path.join(normalizedSourcePath, entry.name),
destinationPath: path.join(destinationDir, entry.name),
destinationPath: path.join(destinationDir, destinationFileName),
strategy: 'flatten-copy',
}));
}