diff --git a/package.json b/package.json index 2c41c3d..ca43683 100644 --- a/package.json +++ b/package.json @@ -141,6 +141,11 @@ "type": "boolean", "default": true, "markdownDescription": "Enable experimental possibility to use opened tabs as context for manual completion mode." + }, + "firecoder.homedir": { + "type": "string", + "default": "", + "description": "The directory to use for storing user data associated with this extension. Set to an empty string, `os.homedir()` will be used." } } } @@ -178,4 +183,4 @@ "@grafana/faro-core": "^1.3.5", "@grafana/faro-web-sdk": "^1.3.5" } -} +} \ No newline at end of file diff --git a/src/common/download/utils.ts b/src/common/download/utils.ts index 34d731a..6a3c160 100644 --- a/src/common/download/utils.ts +++ b/src/common/download/utils.ts @@ -5,6 +5,7 @@ import fsPromise from "node:fs/promises"; import fs from "node:fs"; import child_process from "node:child_process"; import { promisify } from "node:util"; +import { configuration } from "../utils/configuration"; const exec = promisify(child_process.exec); export const checkFileOrFolderExists = async (pathToCheck: string) => { @@ -17,6 +18,12 @@ export const checkFileOrFolderExists = async (pathToCheck: string) => { }; export const getSaveFolder = async () => { + const homedirFromConfiguration = configuration.get("homedir"); + + if (homedirFromConfiguration !== "") { + return homedirFromConfiguration; + } + const pathSaveFolder = path.join(os.homedir(), ".firecoder"); const folderIsExist = await checkFileOrFolderExists(pathSaveFolder); diff --git a/src/common/utils/configuration.ts b/src/common/utils/configuration.ts index d17c93b..16a34bb 100644 --- a/src/common/utils/configuration.ts +++ b/src/common/utils/configuration.ts @@ -23,6 +23,9 @@ const ConfigurationProperties = { "completion.manuallyMode": { default: "base-small", }, + homedir: { + default: "", + }, } as const; interface ConfigurationPropertiesType @@ -48,6 +51,9 @@ interface ConfigurationPropertiesType "completion.manuallyMode": { possibleValues: TypeModelsBase; }; + homedir: { + possibleValues: string; + }; } class Configuration {