UNPKG

@patchworkdev/pdk

Version:

Patchwork Development Kit

51 lines (50 loc) 2.96 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.generatePonderEnv = generatePonderEnv; const path_1 = __importDefault(require("path")); const contract_processor_1 = require("../../commands/dev/services/contract-processor"); //info here needs to be written to the context during compile const config_1 = require("../../common/helpers/config"); const env_1 = require("../../common/helpers/env"); const error_1 = require("../../common/helpers/error"); const logger_1 = require("../../common/helpers/logger"); const text_1 = require("../../common/helpers/text"); const lockFile_1 = __importDefault(require("../../services/lockFile")); async function generatePonderEnv(rootDir) { const configPath = path_1.default.join(rootDir, 'patchwork.config.ts'); const ponderEnvPath = path_1.default.join(rootDir, 'ponder', '.env.local'); const projectConfig = await (0, config_1.importPatchworkConfig)(configPath); if (!projectConfig.networks) { logger_1.logger.error(`No networks found in the project config. Cannot build network configuration.`); throw new error_1.PDKError(error_1.ErrorCode.PROJECT_CONFIG_MISSING_NETWORKS, `No networks found in the project config at ${configPath}`); } const env = await (0, env_1.getEnvFile)(ponderEnvPath); Object.entries(projectConfig.networks).map(([networkName, network]) => { env[`${(0, text_1.envVarCase)(networkName)}_RPC`] = network.rpc; }); const lockFileManager = new lockFile_1.default(configPath); const selectedNetwork = lockFileManager.getCurrentNetwork(); const contractProcessor = new contract_processor_1.ContractProcessor(); const bytecodeInfo = await contractProcessor.processContracts(configPath, {}, false); for (const contractName in projectConfig.contracts) { const deploymentInfo = lockFileManager.getLatestDeploymentForContract(contractName, selectedNetwork); if (!deploymentInfo) { if (bytecodeInfo[contractName]) { env[`${(0, text_1.envVarCase)(contractName)}_BLOCK`] = '1'; env[`${(0, text_1.envVarCase)(contractName)}_ADDRESS`] = bytecodeInfo[contractName].deployedAddress; } else { logger_1.logger.error(`No deployment found for ${contractName}`); throw new error_1.PDKError(error_1.ErrorCode.DEPLOYMENT_NOT_FOUND, `No deployment found for ${contractName}`); } } else { env[`${(0, text_1.envVarCase)(contractName)}_BLOCK`] = deploymentInfo.block.toString(); env[`${(0, text_1.envVarCase)(contractName)}_ADDRESS`] = deploymentInfo.address; } } (0, env_1.writeEnvFile)(env, ponderEnvPath); logger_1.logger.info(`Ponder env generated successfully: ${ponderEnvPath}`); }