12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- #!/usr/bin/env zx
- import "zx/globals";
- import { getCargo } from "./utils.mjs";
- // Arguments to pass to the `create-solana-program` command.
- const rustClientCargo = getCargo(path.join("clients", "rust"));
- const jsClientPkg = require(
- path.join(__dirname, "..", "clients", "js", "package.json")
- );
- const templateArgs = [
- "token",
- "--address",
- "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
- "--org",
- "solana-program",
- "--rust-client-crate-name",
- rustClientCargo.package.name,
- "--js-client-package-name",
- jsClientPkg.name,
- "--default",
- "--force",
- ];
- // File and folder patterns that should not be overwritten by the template upgrade.
- const unchangedGlobs = [
- "clients/**/src/**",
- "clients/**/src/*",
- "clients/js/test/*",
- "clients/rust/tests/*",
- "program/**/*",
- "program/*",
- "scripts/generate-clients.mjs",
- "scripts/generate-idls.mjs",
- "scripts/upgrade-template.mjs",
- "scripts/program/*",
- "Cargo.lock",
- "**/pnpm-lock.yaml",
- "pnpm-lock.yaml",
- ];
- // Prevent CLI arguments from being escaped.
- $.quote = (command) => command;
- // Re-generate the repo from the parent directory.
- cd("..");
- await $`pnpm create solana-program@latest ${templateArgs}`;
- // Go back inside the updated repo.
- cd("token");
- // Restore files and folders that should not be overwritten.
- await $`git add --all`;
- for (const glob of unchangedGlobs) {
- await $`git restore --worktree --staged "${glob}"`;
- }
- // Re-install dependencies.
- await $`pnpm install`;
|