smart-contracts/foundry-smart-contract-lottery-cu/script/DeployRaffle.s.sol

44 lines
1.7 KiB
Solidity

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
import {Script} from "forge-std/Script.sol";
import {HelperConfig} from "./HelperConfig.s.sol";
import {Raffle} from "../src/Raffle.sol";
import {AddConsumer, CreateSubscription, FundSubscription} from "./Interactions.s.sol";
contract DeployRaffle is Script {
function run() external returns (Raffle, HelperConfig) {
HelperConfig helperConfig = new HelperConfig(); // This comes with our mocks!
AddConsumer addConsumer = new AddConsumer();
HelperConfig.NetworkConfig memory config = helperConfig.getConfig();
if (config.subscriptionId == 0) {
CreateSubscription createSubscription = new CreateSubscription();
(config.subscriptionId, config.vrfCoordinatorV2_5) =
createSubscription.createSubscription(config.vrfCoordinatorV2_5, config.account);
FundSubscription fundSubscription = new FundSubscription();
fundSubscription.fundSubscription(
config.vrfCoordinatorV2_5, config.subscriptionId, config.link, config.account
);
helperConfig.setConfig(block.chainid, config);
}
vm.startBroadcast(config.account);
Raffle raffle = new Raffle(
config.subscriptionId,
config.gasLane,
config.automationUpdateInterval,
config.raffleEntranceFee,
config.callbackGasLimit,
config.vrfCoordinatorV2_5
);
vm.stopBroadcast();
// We already have a broadcast in here
addConsumer.addConsumer(address(raffle), config.vrfCoordinatorV2_5, config.subscriptionId, config.account);
return (raffle, helperConfig);
}
}