From 7a39c036112f7fcc3b4ef379da3910222570b087 Mon Sep 17 00:00:00 2001 From: MarkFeder Date: Tue, 1 Sep 2026 12:30:49 +0200 Subject: [PATCH] chore: dump fixtures without rewriting the global Solana config Every `prepare.mjs` that pulls a program fixture from mainnet ran `solana config set -um` first, which writes mainnet into `~/.config/solana/cli/config.yml` and leaves it there. A plain `pnpm install` was therefore enough to silently repoint a developer's CLI, and the `deploy` scripts in these examples take no cluster flag, so a later deploy would follow it to mainnet. Passing `-um` to `solana program dump` scopes the cluster to that one command instead. Verified for both script styles (zx and stdlib) with the global config on devnet: the fixtures still download from mainnet and `solana config get` is unchanged afterwards. --- tokens/create-token/anchor/prepare.mjs | 6 +++--- tokens/create-token/native/prepare.mjs | 6 +++--- tokens/nft-operations/anchor/prepare.mjs | 6 +++--- tokens/nft-operations/pinocchio/prepare.mjs | 6 +++--- tokens/pda-mint-authority/anchor/prepare.mjs | 6 +++--- tokens/pda-mint-authority/native/prepare.mjs | 6 +++--- tokens/transfer-tokens/anchor/prepare.mjs | 6 +++--- tokens/transfer-tokens/native/prepare.mjs | 6 +++--- 8 files changed, 24 insertions(+), 24 deletions(-) diff --git a/tokens/create-token/anchor/prepare.mjs b/tokens/create-token/anchor/prepare.mjs index 357a1a645..911d7e3b3 100644 --- a/tokens/create-token/anchor/prepare.mjs +++ b/tokens/create-token/anchor/prepare.mjs @@ -18,12 +18,12 @@ try { for (const program of programs) { const { id, name } = program; const outputFile = join(outputDir, name); - await $`solana config set -um`; - try { await mkdir(outputDir, { recursive: true }); if (overwrite) await rm(outputFile, { force: true }); - await $`solana program dump ${id} ${outputFile}`; + // `-um` targets mainnet for this command only, leaving the developer's + // global Solana CLI config alone. + await $`solana program dump -um ${id} ${outputFile}`; console.log(`Program ${id} dumped to ${outputFile}`); } catch (error) { console.error(`Error dumping ${id}: ${error.message}`); diff --git a/tokens/create-token/native/prepare.mjs b/tokens/create-token/native/prepare.mjs index 357a1a645..911d7e3b3 100644 --- a/tokens/create-token/native/prepare.mjs +++ b/tokens/create-token/native/prepare.mjs @@ -18,12 +18,12 @@ try { for (const program of programs) { const { id, name } = program; const outputFile = join(outputDir, name); - await $`solana config set -um`; - try { await mkdir(outputDir, { recursive: true }); if (overwrite) await rm(outputFile, { force: true }); - await $`solana program dump ${id} ${outputFile}`; + // `-um` targets mainnet for this command only, leaving the developer's + // global Solana CLI config alone. + await $`solana program dump -um ${id} ${outputFile}`; console.log(`Program ${id} dumped to ${outputFile}`); } catch (error) { console.error(`Error dumping ${id}: ${error.message}`); diff --git a/tokens/nft-operations/anchor/prepare.mjs b/tokens/nft-operations/anchor/prepare.mjs index 357a1a645..911d7e3b3 100644 --- a/tokens/nft-operations/anchor/prepare.mjs +++ b/tokens/nft-operations/anchor/prepare.mjs @@ -18,12 +18,12 @@ try { for (const program of programs) { const { id, name } = program; const outputFile = join(outputDir, name); - await $`solana config set -um`; - try { await mkdir(outputDir, { recursive: true }); if (overwrite) await rm(outputFile, { force: true }); - await $`solana program dump ${id} ${outputFile}`; + // `-um` targets mainnet for this command only, leaving the developer's + // global Solana CLI config alone. + await $`solana program dump -um ${id} ${outputFile}`; console.log(`Program ${id} dumped to ${outputFile}`); } catch (error) { console.error(`Error dumping ${id}: ${error.message}`); diff --git a/tokens/nft-operations/pinocchio/prepare.mjs b/tokens/nft-operations/pinocchio/prepare.mjs index 4a4388dd2..04bc2554a 100644 --- a/tokens/nft-operations/pinocchio/prepare.mjs +++ b/tokens/nft-operations/pinocchio/prepare.mjs @@ -21,13 +21,13 @@ const outputDir = 'tests/fixtures'; try { mkdirSync(outputDir, { recursive: true }); - // Point the Solana CLI at mainnet, where the canonical program lives. - execSync('solana config set -um', { stdio: 'inherit' }); for (const { id, name } of programs) { const outputFile = join(outputDir, name); rmSync(outputFile, { force: true }); - execSync(`solana program dump ${id} ${outputFile}`, { stdio: 'inherit' }); + // `-um` points this one command at mainnet, where the canonical program + // lives, without touching the developer's global Solana CLI config. + execSync(`solana program dump -um ${id} ${outputFile}`, { stdio: 'inherit' }); console.log(`Dumped ${id} -> ${outputFile}`); } } catch (error) { diff --git a/tokens/pda-mint-authority/anchor/prepare.mjs b/tokens/pda-mint-authority/anchor/prepare.mjs index 357a1a645..911d7e3b3 100644 --- a/tokens/pda-mint-authority/anchor/prepare.mjs +++ b/tokens/pda-mint-authority/anchor/prepare.mjs @@ -18,12 +18,12 @@ try { for (const program of programs) { const { id, name } = program; const outputFile = join(outputDir, name); - await $`solana config set -um`; - try { await mkdir(outputDir, { recursive: true }); if (overwrite) await rm(outputFile, { force: true }); - await $`solana program dump ${id} ${outputFile}`; + // `-um` targets mainnet for this command only, leaving the developer's + // global Solana CLI config alone. + await $`solana program dump -um ${id} ${outputFile}`; console.log(`Program ${id} dumped to ${outputFile}`); } catch (error) { console.error(`Error dumping ${id}: ${error.message}`); diff --git a/tokens/pda-mint-authority/native/prepare.mjs b/tokens/pda-mint-authority/native/prepare.mjs index 357a1a645..911d7e3b3 100644 --- a/tokens/pda-mint-authority/native/prepare.mjs +++ b/tokens/pda-mint-authority/native/prepare.mjs @@ -18,12 +18,12 @@ try { for (const program of programs) { const { id, name } = program; const outputFile = join(outputDir, name); - await $`solana config set -um`; - try { await mkdir(outputDir, { recursive: true }); if (overwrite) await rm(outputFile, { force: true }); - await $`solana program dump ${id} ${outputFile}`; + // `-um` targets mainnet for this command only, leaving the developer's + // global Solana CLI config alone. + await $`solana program dump -um ${id} ${outputFile}`; console.log(`Program ${id} dumped to ${outputFile}`); } catch (error) { console.error(`Error dumping ${id}: ${error.message}`); diff --git a/tokens/transfer-tokens/anchor/prepare.mjs b/tokens/transfer-tokens/anchor/prepare.mjs index 357a1a645..911d7e3b3 100644 --- a/tokens/transfer-tokens/anchor/prepare.mjs +++ b/tokens/transfer-tokens/anchor/prepare.mjs @@ -18,12 +18,12 @@ try { for (const program of programs) { const { id, name } = program; const outputFile = join(outputDir, name); - await $`solana config set -um`; - try { await mkdir(outputDir, { recursive: true }); if (overwrite) await rm(outputFile, { force: true }); - await $`solana program dump ${id} ${outputFile}`; + // `-um` targets mainnet for this command only, leaving the developer's + // global Solana CLI config alone. + await $`solana program dump -um ${id} ${outputFile}`; console.log(`Program ${id} dumped to ${outputFile}`); } catch (error) { console.error(`Error dumping ${id}: ${error.message}`); diff --git a/tokens/transfer-tokens/native/prepare.mjs b/tokens/transfer-tokens/native/prepare.mjs index 357a1a645..911d7e3b3 100644 --- a/tokens/transfer-tokens/native/prepare.mjs +++ b/tokens/transfer-tokens/native/prepare.mjs @@ -18,12 +18,12 @@ try { for (const program of programs) { const { id, name } = program; const outputFile = join(outputDir, name); - await $`solana config set -um`; - try { await mkdir(outputDir, { recursive: true }); if (overwrite) await rm(outputFile, { force: true }); - await $`solana program dump ${id} ${outputFile}`; + // `-um` targets mainnet for this command only, leaving the developer's + // global Solana CLI config alone. + await $`solana program dump -um ${id} ${outputFile}`; console.log(`Program ${id} dumped to ${outputFile}`); } catch (error) { console.error(`Error dumping ${id}: ${error.message}`);