From 6dbdd685c440954d296d0ed46dcee5ff9ba7e263 Mon Sep 17 00:00:00 2001 From: hdoo Date: Sun, 26 Apr 2026 23:39:17 +0700 Subject: [PATCH] fix duplicate --settings error --- packages/cli/src/utils/codeCommand.ts | 30 ++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/packages/cli/src/utils/codeCommand.ts b/packages/cli/src/utils/codeCommand.ts index 1745a24..68449cc 100644 --- a/packages/cli/src/utils/codeCommand.ts +++ b/packages/cli/src/utils/codeCommand.ts @@ -83,9 +83,33 @@ export async function executeCodeCommand( } } - const settingsFile = await getSettingsPath(`${JSON.stringify(settingsFlag)}`) - - args.push('--settings', settingsFile); + // merge --settings args if exists with settingsFlag: + // new settingsFlag = {...settingsFlag, ...args['--settings']} + const joinedSettingsArgs = args.includes('--settings') ? args.slice(args.indexOf('--settings') + 1) : []; + console.log(`joinedSettingsArgs : ${joinedSettingsArgs}`); + if (joinedSettingsArgs.length > 0) { + try { + const parsedSettingsArgs = JSON.parse(joinedSettingsArgs[0]); + settingsFlag = { + ...settingsFlag, + ...parsedSettingsArgs, + env: { + ...settingsFlag.env, + ...parsedSettingsArgs.env, + } as ClaudeSettingsFlag['env'] + }; + console.log(`Merged settingsFlag with --settings args: ${JSON.stringify(settingsFlag)}`); + } catch (error) { + console.error(`Failed to parse --settings argument: ${joinedSettingsArgs[0]}`, error); + } + const settingsFile = await getSettingsPath(`${JSON.stringify(settingsFlag)}`); + // overwrite the --settings arg with the new settings file path + const settingsIndex = args.indexOf('--settings'); + args[settingsIndex + 1] = settingsFile; + } else { + const settingsFile = await getSettingsPath(`${JSON.stringify(settingsFlag)}`); + args.push('--settings', settingsFile); + } // Increment reference count when command starts incrementReferenceCount();