diff --git a/src/utils/info.ts b/src/utils/info.ts index 37c4c707..99a91930 100644 --- a/src/utils/info.ts +++ b/src/utils/info.ts @@ -5,12 +5,19 @@ export function getConfigPaths() { const homeDir = Deno.build.os == "windows" ? Deno.env.get("USERPROFILE")! : Deno.env.get("HOME")!; - const configDir = join(homeDir, ".deno", "deployctl"); + const xdgCacheDir = Deno.env.get("XDG_CACHE_HOME"); + + const denoDir = Deno.env.get("DENO_DIR"); + const cacheDir = join( + denoDir || + (xdgCacheDir ? join(xdgCacheDir, "deno") : join(homeDir, ".deno")), + "deployctl", + ); return { - configDir, - updatePath: join(configDir, "update.json"), - credentialsPath: join(configDir, "credentials.json"), + cacheDir, + updatePath: join(cacheDir, "update.json"), + credentialsPath: join(cacheDir, "credentials.json"), }; } @@ -18,8 +25,8 @@ export async function fetchReleases() { try { const { latest } = await getVersions(); const updateInfo = { lastFetched: Date.now(), latest }; - const { updatePath, configDir } = getConfigPaths(); - await Deno.mkdir(configDir, { recursive: true }); + const { updatePath, cacheDir } = getConfigPaths(); + await Deno.mkdir(cacheDir, { recursive: true }); await Deno.writeFile( updatePath, new TextEncoder().encode(JSON.stringify(updateInfo, null, 2)), diff --git a/src/utils/token_storage/fs.ts b/src/utils/token_storage/fs.ts index 3318df03..8a5f20db 100644 --- a/src/utils/token_storage/fs.ts +++ b/src/utils/token_storage/fs.ts @@ -27,8 +27,8 @@ export async function get(): Promise { } export async function store(token: string): Promise { - const { credentialsPath, configDir } = getConfigPaths(); - await Deno.mkdir(configDir, { recursive: true }); + const { credentialsPath, cacheDir } = getConfigPaths(); + await Deno.mkdir(cacheDir, { recursive: true }); await Deno.writeTextFile( credentialsPath, JSON.stringify({ token }, null, 2), @@ -38,8 +38,8 @@ export async function store(token: string): Promise { } export async function remove(): Promise { - const { credentialsPath, configDir } = getConfigPaths(); - await Deno.mkdir(configDir, { recursive: true }); + const { credentialsPath, cacheDir } = getConfigPaths(); + await Deno.mkdir(cacheDir, { recursive: true }); await Deno.writeTextFile(credentialsPath, "{}", { mode: 0o600 }); return Promise.resolve(); }