From 5e22144f5f3628d03841eff0687e1d3f7b856988 Mon Sep 17 00:00:00 2001 From: uncenter <47499684+uncenter@users.noreply.github.com> Date: Wed, 5 Feb 2025 09:35:13 -0500 Subject: [PATCH 1/2] fix: respect DENO_DIR and XDG_* environment variables for fs cache --- src/utils/info.ts | 22 +++++++++++++++++----- src/utils/token_storage/fs.ts | 8 ++++---- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/utils/info.ts b/src/utils/info.ts index 37c4c707..2156009e 100644 --- a/src/utils/info.ts +++ b/src/utils/info.ts @@ -5,12 +5,24 @@ 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 xdgConfigDir = Deno.env.get("XDG_CONFIG_HOME"); + + const denoDir = Deno.env.get("DENO_DIR") || join(homeDir, ".deno"); + const cacheDir = join( + xdgCacheDir ? join(xdgCacheDir, "deno") : denoDir, + "deployctl", + ); + const configDir = join( + xdgConfigDir ? join(xdgConfigDir, "deno") : denoDir, + "deployctl", + ); return { + cacheDir, configDir, - updatePath: join(configDir, "update.json"), - credentialsPath: join(configDir, "credentials.json"), + updatePath: join(cacheDir, "update.json"), + credentialsPath: join(cacheDir, "credentials.json"), }; } @@ -18,8 +30,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(); } From 78974419052af2a2e3c5d9c5c6e4e9fd316086fb Mon Sep 17 00:00:00 2001 From: uncenter <47499684+uncenter@users.noreply.github.com> Date: Wed, 5 Feb 2025 10:11:48 -0500 Subject: [PATCH 2/2] fix: DENO_DIR takes priority over xdg, denoDir default is last --- src/utils/info.ts | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/utils/info.ts b/src/utils/info.ts index 2156009e..99a91930 100644 --- a/src/utils/info.ts +++ b/src/utils/info.ts @@ -6,21 +6,16 @@ export function getConfigPaths() { ? Deno.env.get("USERPROFILE")! : Deno.env.get("HOME")!; const xdgCacheDir = Deno.env.get("XDG_CACHE_HOME"); - const xdgConfigDir = Deno.env.get("XDG_CONFIG_HOME"); - const denoDir = Deno.env.get("DENO_DIR") || join(homeDir, ".deno"); + const denoDir = Deno.env.get("DENO_DIR"); const cacheDir = join( - xdgCacheDir ? join(xdgCacheDir, "deno") : denoDir, - "deployctl", - ); - const configDir = join( - xdgConfigDir ? join(xdgConfigDir, "deno") : denoDir, + denoDir || + (xdgCacheDir ? join(xdgCacheDir, "deno") : join(homeDir, ".deno")), "deployctl", ); return { cacheDir, - configDir, updatePath: join(cacheDir, "update.json"), credentialsPath: join(cacheDir, "credentials.json"), };