Skip to content

Commit 2a6a0e9

Browse files
committed
set file permissions using chmod
1 parent 413c0bb commit 2a6a0e9

File tree

4 files changed

+29
-10
lines changed

4 files changed

+29
-10
lines changed

core/util/paths.ts

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,16 @@ import Types from "../config/types";
1414

1515
dotenv.config();
1616

17+
export function setConfigFilePermissions(filePath: string): void {
18+
try {
19+
if (os.platform() !== "win32") {
20+
fs.chmodSync(filePath, 0o600);
21+
}
22+
} catch (error) {
23+
console.warn(`Failed to set permissions on ${filePath}:`, error);
24+
}
25+
}
26+
1727
const CONTINUE_GLOBAL_DIR = (() => {
1828
const configPath = process.env.CONTINUE_GLOBAL_DIR;
1929
if (configPath) {
@@ -113,10 +123,11 @@ export function getConfigYamlPath(ideType?: IdeType): string {
113123
// https://github.com/continuedev/continue/pull/7224
114124
// This was here because we had different context provider support between jetbrains and vs code
115125
// Leaving so we could differentiate later but for now configs are the same between IDEs
116-
fs.writeFileSync(p, YAML.stringify(defaultConfig), { mode: 0o600 });
126+
fs.writeFileSync(p, YAML.stringify(defaultConfig));
117127
} else {
118-
fs.writeFileSync(p, YAML.stringify(defaultConfig), { mode: 0o600 });
128+
fs.writeFileSync(p, YAML.stringify(defaultConfig));
119129
}
130+
setConfigFilePermissions(p);
120131
}
121132
return p;
122133
}
@@ -261,7 +272,8 @@ function editConfigYaml(callback: (config: ConfigYaml) => ConfigYaml): void {
261272
// Check if it's an object
262273
if (typeof configYaml === "object" && configYaml !== null) {
263274
configYaml = callback(configYaml as any) as any;
264-
fs.writeFileSync(configPath, YAML.stringify(configYaml), { mode: 0o600 });
275+
fs.writeFileSync(configPath, YAML.stringify(configYaml));
276+
setConfigFilePermissions(configPath);
265277
} else {
266278
console.warn("config.yaml is not a valid object");
267279
}

extensions/cli/src/freeTrialTransition.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import * as fs from "fs";
33
import * as path from "path";
44

55
import chalk from "chalk";
6+
import { setConfigFilePermissions } from "core/util/paths.js";
67
import open from "open";
78

89
import { env } from "./env.js";
@@ -31,7 +32,8 @@ async function createOrUpdateConfig(apiKey: string): Promise<void> {
3132
: "";
3233

3334
const updatedContent = updateAnthropicModelInYaml(existingContent, apiKey);
34-
fs.writeFileSync(CONFIG_PATH, updatedContent, { mode: 0o600 });
35+
fs.writeFileSync(CONFIG_PATH, updatedContent);
36+
setConfigFilePermissions(CONFIG_PATH);
3537
}
3638

3739
/**

extensions/cli/src/onboarding.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import * as fs from "fs";
22
import * as path from "path";
33

44
import chalk from "chalk";
5+
import { setConfigFilePermissions } from "core/util/paths.js";
56

67
import { AuthConfig, login } from "./auth/workos.js";
78
import { getApiClient } from "./config.js";
@@ -43,7 +44,8 @@ export async function createOrUpdateConfig(apiKey: string): Promise<void> {
4344
: "";
4445

4546
const updatedContent = updateAnthropicModelInYaml(existingContent, apiKey);
46-
fs.writeFileSync(CONFIG_PATH, updatedContent, { mode: 0o600 });
47+
fs.writeFileSync(CONFIG_PATH, updatedContent);
48+
setConfigFilePermissions(CONFIG_PATH);
4749
}
4850

4951
export async function runOnboardingFlow(

extensions/vscode/src/commands.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,20 @@ import { EXTENSION_NAME } from "core/control-plane/env";
88
import { Core } from "core/core";
99
import { walkDirAsync } from "core/indexing/walkDir";
1010
import { isModelInstaller } from "core/llm";
11+
import { NextEditLoggingService } from "core/nextEdit/NextEditLoggingService";
1112
import { startLocalLemonade } from "core/util/lemonadeHelper";
1213
import { startLocalOllama } from "core/util/ollamaHelper";
13-
import { getConfigJsonPath, getConfigYamlPath } from "core/util/paths";
14+
import {
15+
getConfigJsonPath,
16+
getConfigYamlPath,
17+
setConfigFilePermissions,
18+
} from "core/util/paths";
1419
import { Telemetry } from "core/util/posthog";
1520
import * as vscode from "vscode";
1621
import * as YAML from "yaml";
1722

1823
import { convertJsonToYamlConfig } from "../../../packages/config-yaml/dist";
1924

20-
import { NextEditLoggingService } from "core/nextEdit/NextEditLoggingService";
2125
import {
2226
getAutocompleteStatusBarDescription,
2327
getAutocompleteStatusBarTitle,
@@ -715,9 +719,8 @@ const getCommandsMap: (
715719
const configYaml = convertJsonToYamlConfig(parsed);
716720

717721
const configYamlPath = getConfigYamlPath();
718-
fs.writeFileSync(configYamlPath, YAML.stringify(configYaml), {
719-
mode: 0o600,
720-
});
722+
fs.writeFileSync(configYamlPath, YAML.stringify(configYaml));
723+
setConfigFilePermissions(configYamlPath);
721724

722725
// Open config.yaml
723726
await openEditorAndRevealRange(

0 commit comments

Comments
 (0)