From 0fec673bfbba504c06b7682337fe17e5723a5e33 Mon Sep 17 00:00:00 2001 From: Jacob MacDonald Date: Tue, 30 Sep 2025 12:34:41 -0700 Subject: [PATCH] fix installing extensions from zip files (#10253) --- packages/cli/src/config/extensions/github.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/cli/src/config/extensions/github.ts b/packages/cli/src/config/extensions/github.ts index d1598c84a4..3bc148c82d 100644 --- a/packages/cli/src/config/extensions/github.ts +++ b/packages/cli/src/config/extensions/github.ts @@ -418,22 +418,25 @@ async function downloadFile(url: string, dest: string): Promise { function extractFile(file: string, dest: string) { let args: string[]; + let command: 'tar' | 'unzip'; if (file.endsWith('.tar.gz')) { args = ['-xzf', file, '-C', dest]; + command = 'tar'; } else if (file.endsWith('.zip')) { - args = ['-xf', file, '-C', dest]; + args = [file, '-d', dest]; + command = 'unzip'; } else { throw new Error(`Unsupported file extension for extraction: ${file}`); } - const result = spawnSync('tar', args, { stdio: 'pipe' }); + const result = spawnSync(command, args, { stdio: 'pipe' }); if (result.status !== 0) { if (result.error) { - throw new Error(`Failed to spawn 'tar': ${result.error.message}`); + throw new Error(`Failed to spawn '${command}': ${result.error.message}`); } throw new Error( - `'tar' command failed with exit code ${result.status}: ${result.stderr.toString()}`, + `'${command}' command failed with exit code ${result.status}: ${result.stderr.toString()}`, ); } }