diff --git a/README.md b/README.md index 70cd790..fbda5a0 100644 --- a/README.md +++ b/README.md @@ -36,3 +36,14 @@ $ forge test ```shell $ forge fmt ``` + +### Deploy + +All contracts in this repo can be deployed and verified on the block explorer as follows: + +```sh +export ETHERSCAN_API_KEY='your API key here' +PK='the private key of the deployer' +ETH_RPC_URL='https://rpc.node.url.here.example.com' +forge script 'script/DeployAllContracts.s.sol:DeployAllContracts' -vvvv --rpc-url "$ETH_RPC_URL" --private-key "$PK" --verify --broadcast +``` \ No newline at end of file diff --git a/script/Counter.s.sol b/script/Counter.s.sol deleted file mode 100644 index df9ee8b..0000000 --- a/script/Counter.s.sol +++ /dev/null @@ -1,12 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.13; - -import {Script, console} from "forge-std/Script.sol"; - -contract CounterScript is Script { - function setUp() public {} - - function run() public { - vm.broadcast(); - } -} diff --git a/script/Deploy.sol b/script/Deploy.sol deleted file mode 100644 index 57bdf42..0000000 --- a/script/Deploy.sol +++ /dev/null @@ -1,12 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.13; - -import {Script, console} from "forge-std/Script.sol"; - -contract DeployScript is Script { - function setUp() public {} - - function run() public { - vm.broadcast(); - } -} diff --git a/script/DeployAllContracts.s.sol b/script/DeployAllContracts.s.sol new file mode 100644 index 0000000..30fc13a --- /dev/null +++ b/script/DeployAllContracts.s.sol @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: GPL-3.0 +pragma solidity >=0.8.0 <0.9.0; + +import {Script} from "forge-std/Script.sol"; + +import {DeployUniswapV2PriceOracle, UniswapV2PriceOracle} from "./single-deployment/UniswapV2PriceOracle.s.sol"; +import {DeployConstantProduct, ConstantProduct} from "./single-deployment/ConstantProduct.s.sol"; + +contract DeployAllContracts is DeployConstantProduct, DeployUniswapV2PriceOracle { + function run() public override(DeployConstantProduct, DeployUniswapV2PriceOracle) { + deployAll(); + } + + function deployAll() public returns (ConstantProduct constantProduct, UniswapV2PriceOracle uniswapV2PriceOracle) { + constantProduct = deployConstantProduct(); + uniswapV2PriceOracle = deployUniswapV2PriceOracle(); + } +} diff --git a/script/single-deployment/ConstantProduct.s.sol b/script/single-deployment/ConstantProduct.s.sol new file mode 100644 index 0000000..61c8948 --- /dev/null +++ b/script/single-deployment/ConstantProduct.s.sol @@ -0,0 +1,17 @@ +// SPDX-License-Identifier: GPL-3.0 +pragma solidity >=0.8.0 <0.9.0; + +import {Script} from "forge-std/Script.sol"; + +import {ConstantProduct} from "src/ConstantProduct.sol"; + +contract DeployConstantProduct is Script { + function run() public virtual { + deployConstantProduct(); + } + + function deployConstantProduct() internal returns (ConstantProduct) { + vm.broadcast(); + return new ConstantProduct(); + } +} diff --git a/script/single-deployment/UniswapV2PriceOracle.s.sol b/script/single-deployment/UniswapV2PriceOracle.s.sol new file mode 100644 index 0000000..5a04a9e --- /dev/null +++ b/script/single-deployment/UniswapV2PriceOracle.s.sol @@ -0,0 +1,17 @@ +// SPDX-License-Identifier: GPL-3.0 +pragma solidity >=0.8.0 <0.9.0; + +import {Script} from "forge-std/Script.sol"; + +import {UniswapV2PriceOracle} from "src/oracles/UniswapV2PriceOracle.sol"; + +contract DeployUniswapV2PriceOracle is Script { + function run() public virtual { + deployUniswapV2PriceOracle(); + } + + function deployUniswapV2PriceOracle() internal returns (UniswapV2PriceOracle) { + vm.broadcast(); + return new UniswapV2PriceOracle(); + } +} diff --git a/test/script/DeployAllContracts.t.sol b/test/script/DeployAllContracts.t.sol new file mode 100644 index 0000000..7b8f548 --- /dev/null +++ b/test/script/DeployAllContracts.t.sol @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: GPL-3.0 +pragma solidity >=0.8.0 <0.9.0; + +import {Test} from "forge-std/Test.sol"; + +import {DeployAllContracts} from "script/DeployAllContracts.s.sol"; + +contract DeployAllContractsTest is Test { + DeployAllContracts script; + + function setUp() public { + script = new DeployAllContracts(); + } + + function testDoesNotRevert() public { + script.run(); + } +} diff --git a/test/script/single-deployment/DeployConstantProduct.s.sol b/test/script/single-deployment/DeployConstantProduct.s.sol new file mode 100644 index 0000000..0deb2b1 --- /dev/null +++ b/test/script/single-deployment/DeployConstantProduct.s.sol @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: GPL-3.0 +pragma solidity >=0.8.0 <0.9.0; + +import {Test} from "forge-std/Test.sol"; + +import {DeployConstantProduct} from "script/single-deployment/ConstantProduct.s.sol"; + +contract DeployConstantProductTest is Test { + DeployConstantProduct script; + + function setUp() public { + script = new DeployConstantProduct(); + } + + function testDoesNotRevert() public { + script.run(); + } +} diff --git a/test/script/single-deployment/DeployUniswapV2PriceOracle.sol b/test/script/single-deployment/DeployUniswapV2PriceOracle.sol new file mode 100644 index 0000000..05536dc --- /dev/null +++ b/test/script/single-deployment/DeployUniswapV2PriceOracle.sol @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: GPL-3.0 +pragma solidity >=0.8.0 <0.9.0; + +import {Test} from "forge-std/Test.sol"; + +import {DeployUniswapV2PriceOracle} from "script/single-deployment/UniswapV2PriceOracle.s.sol"; + +contract DeployUniswapV2PriceOracleTest is Test { + DeployUniswapV2PriceOracle script; + + function setUp() public { + script = new DeployUniswapV2PriceOracle(); + } + + function testDoesNotRevert() public { + script.run(); + } +}