UNPKG

@patchworkdev/pdk

Version:

Patchwork Development Kit

69 lines (68 loc) 3.83 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.localDevUp = localDevUp; const lockFile_1 = __importDefault(require("../../services/lockFile")); const contract_processor_1 = require("./services/contract-processor"); const deployment_manager_1 = require("./services/deployment-manager"); const docker_1 = require("./services/docker"); const env_1 = require("./services/env"); const fees_1 = require("./services/fees"); const generator_1 = require("./services/generator"); const tasks_1 = require("./services/tasks"); async function initializeConfig(configPath, config = {}) { const lockFileManager = new lockFile_1.default(configPath); const network = lockFileManager.getCurrentNetwork(); return { rpcUrl: config.rpcUrl || 'http://localhost:8545', privateKey: config.privateKey || '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80', owner: config.owner || '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266', patchworkProtocol: config.patchworkProtocol || '0x00000000001616E65bb9FdA42dFBb7155406549b', network: config.network || network, // Add network from lockFile if not provided }; } async function deployIfNeeded(deploymentManager, contractProcessor, configPath, deployConfig, network) { const bytecodeInfo = await contractProcessor.processContracts(configPath, deployConfig, false); const comparison = await deploymentManager.compareWithPreviousDeployment(network, bytecodeInfo); if (comparison.changes.length > 0) { deploymentManager.logBytecodeChanges(comparison, network); } if (comparison.needsDeployment) { if (!deployConfig.rpcUrl) { throw new Error('RPC URL is required for deployment'); } console.info(`Deploying contracts to ${network}...`); const deployedContracts = await contractProcessor.processContracts(configPath, deployConfig, true); await deploymentManager.logDeployments(deployedContracts, network, deployConfig.rpcUrl); return deployedContracts; } return deploymentManager.getExistingDeployments(bytecodeInfo, network); } async function localDevUp(configPath, config = {}, genService) { console.info('Running local development environment...'); const deployConfig = await initializeConfig(configPath, config); const lockFileManager = new lockFile_1.default(configPath); const dockerService = new docker_1.DockerService(configPath); const deploymentManager = new deployment_manager_1.DeploymentManager(lockFileManager); const contractProcessor = new contract_processor_1.ContractProcessor(); const envGenerator = new env_1.EnvGenerator(configPath); const generatorService = new generator_1.GeneratorService(configPath, lockFileManager); const feeService = new fees_1.FeeService(configPath, deployConfig); const taskService = new tasks_1.TaskService(configPath); await dockerService.startServices(); await generatorService.processGenerators(); const network = lockFileManager.getCurrentNetwork(); const deployedContracts = await deployIfNeeded(deploymentManager, contractProcessor, configPath, deployConfig, network); // Configure fees for all deployed contracts await feeService.configureFeesForDeployment(deployedContracts); await taskService.runTasks({ deployConfig, deployedContracts }); await genService.runGenerator('ponder'); await genService.runGenerator('react'); await envGenerator.generateEnvironments(); await dockerService.restartPonderContainer(); const status = await dockerService.getContainerStatus(); console.table(status); return deployedContracts; }