UNPKG

tenderly-wizard-v6

Version:

A tool for managing virtual testnets using Tenderly

64 lines (53 loc) 2.23 kB
import { ChainId } from "zodiac-roles-sdk/."; import { RolesVersion } from "../utils/types"; import { executeWhitelistV2 } from "../whitelist/whitelist-class"; import { findPermissionsFiles, setGas } from "../utils/util"; import path from "path"; import config from "../env-config"; export async function whitelistSafesV2( rolesDirectory: string = "../access-control-safes-v2/src/roles" ) { const callerDir = process.cwd(); const absoluteWhitelistDirectory = path.resolve(callerDir, rolesDirectory); console.log("absoluteWhitelistDirectory: ", absoluteWhitelistDirectory); // find all files named permissions.ts in the src/roles directory let permissionsFiles: string[] = []; try { permissionsFiles = findPermissionsFiles(rolesDirectory); } catch (error) { console.error("Error finding permissions files:", error); process.exit(1); } // if no permissions files are found, throw an error if (permissionsFiles.length === 0) { throw new Error( `No permissions.ts files found in the ${rolesDirectory} directory or its subdirectories.` ); } // set gas for all accounts await setGas(); // get roles version from .env const rolesVersion = config.ROLES_VERSION as RolesVersion; // get chain const chainId = config.TENDERLY_FORK_ID as ChainId; // iterate all permissions files for (const file of permissionsFiles) { const { default: permissions, chainId: permissionsChainId } = require(file); // console.log("permissions: ", permissions); // console.log("permissionsChainId: ", permissionsChainId); try { // check if the current permission chainId matches the chainId in .env if (permissionsChainId === chainId) { await executeWhitelistV2(permissions, chainId, rolesVersion); console.log(`Whitelist executed successfully for ${file}`); } } catch (error) { console.error(`Error executing whitelist for ${file}:`, error); } } // save snapshot to .env // const postWhitelistSnapshot = await network.provider.send("evm_snapshot", []); // console.log("postWhitelistSnapshot: ", postWhitelistSnapshot); // VirtualTestNet.addToEnvFile("TENDERLY_SNAPSHOT", postWhitelistSnapshot) // return base; }