From 511b10b929d9d07356180e799efe831c0fe7e0ad Mon Sep 17 00:00:00 2001 From: TuDo1403 Date: Sun, 21 Jan 2024 17:11:56 +0700 Subject: [PATCH 1/3] script(BaseMigration): remove duplicate build share config --- script/BaseMigration.s.sol | 1 + script/configs/MigrationConfig.sol | 6 +++++- script/interfaces/configs/IMigrationConfig.sol | 2 ++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/script/BaseMigration.s.sol b/script/BaseMigration.s.sol index 0df9558..0c89f35 100644 --- a/script/BaseMigration.s.sol +++ b/script/BaseMigration.s.sol @@ -34,6 +34,7 @@ abstract contract BaseMigration is ScriptExtended { } function _storeRawSharedArguments() internal virtual { + if (CONFIG.areSharedArgumentsStored()) return; CONFIG.setRawSharedArguments(_sharedArguments()); } diff --git a/script/configs/MigrationConfig.sol b/script/configs/MigrationConfig.sol index 319ef34..2bea430 100644 --- a/script/configs/MigrationConfig.sol +++ b/script/configs/MigrationConfig.sol @@ -7,10 +7,14 @@ abstract contract MigrationConfig is IMigrationConfig { bytes internal _migrationConfig; function setRawSharedArguments(bytes memory config) public virtual { - if (_migrationConfig.length != 0) return; + if (areSharedArgumentsStored()) return; _migrationConfig = config; } + function areSharedArgumentsStored() public view virtual returns (bool) { + return _migrationConfig.length != 0; + } + function getRawSharedArguments() public view virtual returns (bytes memory) { return _migrationConfig; } diff --git a/script/interfaces/configs/IMigrationConfig.sol b/script/interfaces/configs/IMigrationConfig.sol index 1496f92..0858f6f 100644 --- a/script/interfaces/configs/IMigrationConfig.sol +++ b/script/interfaces/configs/IMigrationConfig.sol @@ -2,6 +2,8 @@ pragma solidity ^0.8.19; interface IMigrationConfig { + function areSharedArgumentsStored() external view returns (bool); + function setRawSharedArguments(bytes calldata migrationConfig) external; function getRawSharedArguments() external view returns (bytes memory); From 32a3b2106c6189b1ea150407d56e69a2f220cb4a Mon Sep 17 00:00:00 2001 From: TuDo1403 Date: Sun, 21 Jan 2024 17:10:41 +0700 Subject: [PATCH 2/3] script(ArtifactFactory): auto create deployment folder --- script/ArtifactFactory.sol | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/script/ArtifactFactory.sol b/script/ArtifactFactory.sol index b0d2ebc..da90dea 100644 --- a/script/ArtifactFactory.sol +++ b/script/ArtifactFactory.sol @@ -43,6 +43,11 @@ contract ArtifactFactory is IArtifactFactory { return; } string memory dirPath = CONFIG.getDeploymentDirectory(CONFIG.getCurrentNetwork()); + if (!vm.exists(dirPath)) { + console.log("\n", string.concat(dirPath, " not existed, making one...").yellow()); + vm.createDir(dirPath, true); + vm.writeFile(string.concat(dirPath, ".chainId"), vm.toString(block.chainid)); + } string memory filePath = string.concat(dirPath, fileName, ".json"); string memory json; From 379bdb3d403ee4911729da2d01d6256ff5cf7930 Mon Sep 17 00:00:00 2001 From: TuDo1403 Date: Fri, 2 Feb 2024 16:07:35 +0700 Subject: [PATCH 3/3] feat(RunTimeConfig): skip artifact generation while post checking --- script/ArtifactFactory.sol | 2 +- script/configs/RuntimeConfig.sol | 9 +++++++++ script/extensions/ScriptExtended.s.sol | 4 ++++ script/interfaces/configs/IRuntimeConfig.sol | 4 ++++ 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/script/ArtifactFactory.sol b/script/ArtifactFactory.sol index b0d2ebc..b289f88 100644 --- a/script/ArtifactFactory.sol +++ b/script/ArtifactFactory.sol @@ -38,7 +38,7 @@ contract ArtifactFactory is IArtifactFactory { ).green(), string.concat("(nonce: ", nonce.toString(), ")") ); - if (!CONFIG.getRuntimeConfig().log) { + if (!CONFIG.getRuntimeConfig().log || CONFIG.isPostChecking()) { console.log("Skipping artifact generation for:", vm.getLabel(contractAddr), "\n"); return; } diff --git a/script/configs/RuntimeConfig.sol b/script/configs/RuntimeConfig.sol index 6a4c54e..1078ed7 100644 --- a/script/configs/RuntimeConfig.sol +++ b/script/configs/RuntimeConfig.sol @@ -12,11 +12,20 @@ abstract contract RuntimeConfig is IRuntimeConfig { bool internal _resolved; Option internal _option; string internal _rawCommand; + bool internal _isPostChecking; function getCommand() public view virtual returns (string memory) { return _rawCommand; } + function isPostChecking() public view virtual returns (bool) { + return _isPostChecking; + } + + function setPostCheckingStatus(bool status) public virtual { + _isPostChecking = status; + } + function resolveCommand(string calldata command) external virtual { if (_resolved) return; if (bytes(command).length != 0) { diff --git a/script/extensions/ScriptExtended.s.sol b/script/extensions/ScriptExtended.s.sol index 0955e66..53a9a31 100644 --- a/script/extensions/ScriptExtended.s.sol +++ b/script/extensions/ScriptExtended.s.sol @@ -15,6 +15,7 @@ abstract contract ScriptExtended is Script, StdAssertions, IScriptExtended { bytes public constant EMPTY_ARGS = ""; IGeneralConfig public constant CONFIG = IGeneralConfig(LibSharedAddress.CONFIG); + bool internal _isPostChecking; modifier logFn(string memory fnName) { _logFn(fnName); @@ -48,7 +49,10 @@ abstract contract ScriptExtended is Script, StdAssertions, IScriptExtended { CONFIG.resolveCommand(command); (bool success, bytes memory data) = address(this).delegatecall(callData); success.handleRevert(msg.sig, data); + + CONFIG.setPostCheckingStatus({ status: true }); _postCheck(); + CONFIG.setPostCheckingStatus({ status: false }); } function network() public view virtual returns (TNetwork) { diff --git a/script/interfaces/configs/IRuntimeConfig.sol b/script/interfaces/configs/IRuntimeConfig.sol index 28dae4d..614a288 100644 --- a/script/interfaces/configs/IRuntimeConfig.sol +++ b/script/interfaces/configs/IRuntimeConfig.sol @@ -7,6 +7,10 @@ interface IRuntimeConfig { bool trezor; } + function isPostChecking() external view returns (bool); + + function setPostCheckingStatus(bool status) external; + function getCommand() external view returns (string memory); function resolveCommand(string calldata command) external;