Skip to content

Commit e1ead95

Browse files
committed
refactor: replace packageManager with templateParameters for dynamic placeholders
1 parent 9016fe3 commit e1ead95

1 file changed

Lines changed: 27 additions & 12 deletions

File tree

src/index.ts

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,7 @@ export async function create({
205205
const cwd = process.cwd();
206206
const pkgInfo = pkgFromUserAgent(process.env.npm_config_user_agent);
207207
const packageManager = pkgInfo ? pkgInfo.name : 'npm';
208+
const templateParameters = { packageManager };
208209

209210
// No version provided, read from package.json
210211
if (!version) {
@@ -264,14 +265,14 @@ export async function create({
264265
to: distFolder,
265266
version,
266267
skipFiles,
267-
packageManager,
268+
templateParameters,
268269
});
269270
copyFolder({
270271
from: srcFolder,
271272
to: distFolder,
272273
version,
273274
packageName,
274-
packageManager,
275+
templateParameters,
275276
skipFiles,
276277
});
277278

@@ -296,7 +297,7 @@ export async function create({
296297
to: distFolder,
297298
version,
298299
skipFiles,
299-
packageManager,
300+
templateParameters,
300301
isMergePackageJson: true,
301302
});
302303

@@ -310,7 +311,7 @@ export async function create({
310311
to: distFolder,
311312
version,
312313
skipFiles,
313-
packageManager,
314+
templateParameters,
314315
isMergePackageJson: true,
315316
});
316317

@@ -330,7 +331,7 @@ export async function create({
330331
const agentsPath = path.join(distFolder, 'AGENTS.md');
331332
fs.writeFileSync(
332333
agentsPath,
333-
`${replacePlaceholder(mergedAgents, packageManager)}\n`,
334+
`${replacePlaceholder(mergedAgents, { packageManager })}\n`,
334335
);
335336
}
336337

@@ -392,8 +393,19 @@ export function mergePackageJson(targetPackage: string, extraPackage: string) {
392393
const isMarkdown = (file: string) =>
393394
file.endsWith('.md') || file.endsWith('.mdx');
394395

395-
const replacePlaceholder = (content: string, packageManager: string) =>
396-
content.replace(/{{ packageManager }}/g, packageManager);
396+
const replacePlaceholder = (
397+
content: string,
398+
templateParameters: Record<string, string>,
399+
) => {
400+
let result = content;
401+
for (const key of Object.keys(templateParameters)) {
402+
result = result.replace(
403+
new RegExp(`{{ ${key} }}`, 'g'),
404+
templateParameters[key],
405+
);
406+
}
407+
return result;
408+
};
397409

398410
/**
399411
* Copy files from one folder to another.
@@ -409,15 +421,15 @@ export function copyFolder({
409421
to,
410422
version,
411423
packageName,
412-
packageManager,
424+
templateParameters,
413425
isMergePackageJson,
414426
skipFiles = [],
415427
}: {
416428
from: string;
417429
to: string;
418430
version?: string | Record<string, string>;
419431
packageName?: string;
420-
packageManager: string;
432+
templateParameters?: Record<string, string>;
421433
isMergePackageJson?: boolean;
422434
skipFiles?: string[];
423435
}) {
@@ -445,7 +457,7 @@ export function copyFolder({
445457
copyFolder({
446458
from: srcFile,
447459
to: distFile,
448-
packageManager,
460+
templateParameters,
449461
version,
450462
skipFiles,
451463
});
@@ -461,9 +473,12 @@ export function copyFolder({
461473
} else {
462474
fs.copyFileSync(srcFile, distFile);
463475

464-
if (isMarkdown(distFile)) {
476+
if (templateParameters && isMarkdown(distFile)) {
465477
const content = fs.readFileSync(distFile, 'utf-8');
466-
fs.writeFileSync(distFile, replacePlaceholder(content, packageManager));
478+
fs.writeFileSync(
479+
distFile,
480+
replacePlaceholder(content, templateParameters),
481+
);
467482
}
468483
}
469484
}

0 commit comments

Comments
 (0)