Skip to content

Commit 0f3733f

Browse files
committed
1.9.4: Make api-mode scriptEdits package-manager-agnostic to fix copy:spectaql removal in REST mode
1 parent 5c75ceb commit 0f3733f

4 files changed

Lines changed: 28 additions & 4 deletions

File tree

__tests__/api-mode.test.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,18 @@ describe('ApiMode Extension', () => {
194194
expect(pkg.scripts.copy).toBe('npm run copy:assets');
195195
});
196196

197+
it('should apply scriptEdits with different package manager (pnpm)', async () => {
198+
// Override package.json with pnpm scripts
199+
const pkg = JSON.parse(filesystem.read(filesystem.path(tempDir, 'package.json')));
200+
pkg.scripts.copy = 'pnpm run copy:assets && pnpm run copy:spectaql';
201+
filesystem.write(filesystem.path(tempDir, 'package.json'), pkg, { jsonIndent: 2 });
202+
203+
await apiMode.processApiMode(tempDir, 'Rest');
204+
205+
const result = JSON.parse(filesystem.read(filesystem.path(tempDir, 'package.json')));
206+
expect(result.scripts.copy).toBe('pnpm run copy:assets');
207+
});
208+
197209
it('should strip graphql regions from source files', async () => {
198210
await apiMode.processApiMode(tempDir, 'Rest');
199211

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@lenne.tech/cli",
3-
"version": "1.9.3",
3+
"version": "1.9.4",
44
"description": "lenne.Tech CLI: lt",
55
"keywords": [
66
"lenne.Tech",

src/extensions/api-mode.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,19 @@ export class ApiMode {
105105
if (modeConfig.scriptEdits && pkg.scripts) {
106106
for (const [scriptName, edit] of Object.entries(modeConfig.scriptEdits)) {
107107
if (pkg.scripts[scriptName] && (edit as any).remove) {
108-
pkg.scripts[scriptName] = pkg.scripts[scriptName].replace((edit as any).remove, '');
108+
const removeStr: string = (edit as any).remove;
109+
// Try literal match first, then try all package manager variants
110+
if (pkg.scripts[scriptName].includes(removeStr)) {
111+
pkg.scripts[scriptName] = pkg.scripts[scriptName].replace(removeStr, '');
112+
} else {
113+
for (const pm of ['npm', 'pnpm', 'yarn']) {
114+
const variant = removeStr.replace(/\b(npm|pnpm|yarn)\s+run\b/g, `${pm} run`);
115+
if (pkg.scripts[scriptName].includes(variant)) {
116+
pkg.scripts[scriptName] = pkg.scripts[scriptName].replace(variant, '');
117+
break;
118+
}
119+
}
120+
}
109121
}
110122
}
111123
}

0 commit comments

Comments
 (0)