(opts = {}, env = process.env)
| 78 | } |
| 79 | |
| 80 | function resolveClaudeSettingsFile(opts = {}, env = process.env) { |
| 81 | if (opts.file) { |
| 82 | return { file: opts.file, source: 'opts' }; |
| 83 | } |
| 84 | |
| 85 | const defaultFile = getClaudeSettingsFile(env); |
| 86 | if (!defaultFile) { |
| 87 | return { file: null, reason: 'missing_settings_path' }; |
| 88 | } |
| 89 | |
| 90 | const envFile = getEnvClaudeSettingsFile(env); |
| 91 | if (!envFile) { |
| 92 | return { file: defaultFile, source: 'default' }; |
| 93 | } |
| 94 | |
| 95 | const home = getHomeDir(env); |
| 96 | const envResolved = normalizeSettingsPath(envFile, home); |
| 97 | const defaultResolved = normalizeSettingsPath(defaultFile, home); |
| 98 | if (samePath(envResolved, defaultResolved)) { |
| 99 | return { file: defaultFile, source: 'env_default' }; |
| 100 | } |
| 101 | |
| 102 | return { file: null, reason: 'unsafe_settings_path' }; |
| 103 | } |
| 104 | |
| 105 | function readJsonFile(file) { |
| 106 | const result = readJsonFileResult(file); |
no test coverage detected