Skip to content

Commit ea9a0c6

Browse files
committed
add a migration script that rewrites imports
1 parent a0c7afb commit ea9a0c6

File tree

4 files changed

+334
-1
lines changed

4 files changed

+334
-1
lines changed

contracts/token/ERC1155/extensions/ERC1155Holder.sol renamed to contracts/token/ERC1155/utils/ERC1155Holder.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
pragma solidity ^0.8.0;
44

5-
import "../utils/ERC1155Receiver.sol";
5+
import "./ERC1155Receiver.sol";
66

77
/**
88
* @dev _Available since v3.1._

package-lock.json

Lines changed: 155 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@
7070
"lodash.zip": "^4.2.0",
7171
"micromatch": "^4.0.2",
7272
"mocha": "^8.0.1",
73+
"replace-in-file": "^6.2.0",
7374
"rimraf": "^3.0.2",
7475
"solhint": "^3.2.0",
7576
"solidity-coverage": "^0.7.11",

scripts/rewrite-imports.js

Lines changed: 177 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
1+
const path = require('path');
2+
const replace = require('replace-in-file');
3+
4+
const updates = {
5+
'@openzeppelin/contracts/access/AccessControl.sol':
6+
'@openzeppelin/contracts/utils/access/AccessControl.sol',
7+
'@openzeppelin/contracts/access/Ownable.sol':
8+
'@openzeppelin/contracts/utils/access/Ownable.sol',
9+
'@openzeppelin/contracts/access/TimelockController.sol':
10+
'@openzeppelin/contracts/standalone/TimelockController.sol',
11+
'@openzeppelin/contracts/cryptography/ECDSA.sol':
12+
'@openzeppelin/contracts/utils/cryptography/ECDSA.sol',
13+
'@openzeppelin/contracts/cryptography/MerkleProof.sol':
14+
'@openzeppelin/contracts/utils/cryptography/MerkleProof.sol',
15+
'@openzeppelin/contracts/drafts/EIP712.sol':
16+
'@openzeppelin/contracts/utils/drafts-EIP712.sol',
17+
'@openzeppelin/contracts/drafts/ERC20Permit.sol':
18+
'@openzeppelin/contracts/tokens/ERC20/extensions/draft-ERC20Permit.sol',
19+
'@openzeppelin/contracts/drafts/IERC20Permit.sol':
20+
'@openzeppelin/contracts/tokens/ERC20/extensions/draft-IERC20Permit.sol',
21+
'@openzeppelin/contracts/GSN/Context.sol':
22+
'@openzeppelin/contracts/utils/Context.sol',
23+
'@openzeppelin/contracts/GSN/GSNRecipientERC20Fee.sol':
24+
'@openzeppelin/contracts/utils/GSN/GSNRecipientERC20Fee.sol',
25+
'@openzeppelin/contracts/GSN/GSNRecipientSignature.sol':
26+
'@openzeppelin/contracts/utils/GSN/GSNRecipientSignature.sol',
27+
'@openzeppelin/contracts/GSN/GSNRecipient.sol':
28+
'@openzeppelin/contracts/utils/GSN/GSNRecipient.sol',
29+
'@openzeppelin/contracts/GSN/IRelayHub.sol':
30+
'@openzeppelin/contracts/utils/GSN/IRelayHub.sol',
31+
'@openzeppelin/contracts/GSN/IRelayRecipient.sol':
32+
'@openzeppelin/contracts/utils/GSN/IRelayRecipient.sol',
33+
'@openzeppelin/contracts/introspection/ERC165Checker.sol':
34+
'@openzeppelin/contracts/utils/introspection/ERC165Checker.sol',
35+
'@openzeppelin/contracts/introspection/ERC165.sol':
36+
'@openzeppelin/contracts/utils/introspection/ERC165.sol',
37+
'@openzeppelin/contracts/introspection/ERC1820Implementer.sol':
38+
'@openzeppelin/contracts/utils/introspection/ERC1820Implementer.sol',
39+
'@openzeppelin/contracts/introspection/IERC165.sol':
40+
'@openzeppelin/contracts/utils/introspection/IERC165.sol',
41+
'@openzeppelin/contracts/introspection/IERC1820Implementer.sol':
42+
'@openzeppelin/contracts/utils/introspection/IERC1820Implementer.sol',
43+
'@openzeppelin/contracts/introspection/IERC1820Registry.sol':
44+
'@openzeppelin/contracts/utils/introspection/IERC1820Registry.sol',
45+
'@openzeppelin/contracts/math/Math.sol':
46+
'@openzeppelin/contracts/utils/math/Math.sol',
47+
'@openzeppelin/contracts/math/SafeMath.sol':
48+
'@openzeppelin/contracts/utils/math/SafeMath.sol',
49+
'@openzeppelin/contracts/math/SignedSafeMath.sol':
50+
'@openzeppelin/contracts/utils/math/SignedSafeMath.sol',
51+
'@openzeppelin/contracts/payment/escrow/ConditionalEscrow.sol':
52+
'@openzeppelin/contracts/utils/payment/escrow/ConditionalEscrow.sol',
53+
'@openzeppelin/contracts/payment/escrow/Escrow.sol':
54+
'@openzeppelin/contracts/utils/payment/escrow/Escrow.sol',
55+
'@openzeppelin/contracts/payment/escrow/RefundEscrow.sol':
56+
'@openzeppelin/contracts/utils/payment/escrow/RefundEscrow.sol',
57+
'@openzeppelin/contracts/payment/PaymentSplitter.sol':
58+
'@openzeppelin/contracts/standalone/PaymentSplitter.sol',
59+
'@openzeppelin/contracts/payment/PullPayment.sol':
60+
'@openzeppelin/contracts/utils/payment/PullPayment.sol',
61+
'@openzeppelin/contracts/presets/ERC1155PresetMinterPauser.sol':
62+
'@openzeppelin/contracts/tokens/ERC1155/presets/ERC1155PresetMinterPauser.sol',
63+
'@openzeppelin/contracts/presets/ERC20PresetFixedSupply.sol':
64+
'@openzeppelin/contracts/tokens/ERC20/presets/ERC20PresetFixedSupply.sol',
65+
'@openzeppelin/contracts/presets/ERC20PresetMinterPauser.sol':
66+
'@openzeppelin/contracts/tokens/ERC20/presets/ERC20PresetMinterPauser.sol',
67+
'@openzeppelin/contracts/presets/ERC721PresetMinterPauserAutoId.sol':
68+
'@openzeppelin/contracts/tokens/ERC721/presets/ERC721PresetMinterPauserAutoId.sol',
69+
'@openzeppelin/contracts/presets/ERC777PresetFixedSupply.sol':
70+
'@openzeppelin/contracts/tokens/ERC777/presets/ERC777PresetFixedSupply.sol',
71+
'@openzeppelin/contracts/proxy/BeaconProxy.sol':
72+
'@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol',
73+
'@openzeppelin/contracts/proxy/Clones.sol':
74+
null,
75+
'@openzeppelin/contracts/proxy/IBeacon.sol':
76+
'@openzeppelin/contracts/proxy/beacon/IBeacon.sol',
77+
'@openzeppelin/contracts/proxy/Initializable.sol':
78+
'@openzeppelin/contracts/utils/Initializable.sol',
79+
'@openzeppelin/contracts/proxy/ProxyAdmin.sol':
80+
'@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol',
81+
'@openzeppelin/contracts/proxy/Proxy.sol':
82+
null,
83+
'@openzeppelin/contracts/proxy/TransparentUpgradeableProxy.sol':
84+
'@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol',
85+
'@openzeppelin/contracts/proxy/UpgradeableBeacon.sol':
86+
'@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol',
87+
'@openzeppelin/contracts/proxy/UpgradeableProxy.sol':
88+
null,
89+
'@openzeppelin/contracts/token/ERC1155/ERC1155Burnable.sol':
90+
'@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Burnable.sol',
91+
'@openzeppelin/contracts/token/ERC1155/ERC1155Holder.sol':
92+
'@openzeppelin/contracts/token/ERC1155/utils/ERC1155Holder.sol',
93+
'@openzeppelin/contracts/token/ERC1155/ERC1155Pausable.sol':
94+
'@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Pausable.sol',
95+
'@openzeppelin/contracts/token/ERC1155/ERC1155Receiver.sol':
96+
'@openzeppelin/contracts/token/ERC1155/utils/ERC1155Receiver.sol',
97+
'@openzeppelin/contracts/token/ERC1155/ERC1155.sol':
98+
null,
99+
'@openzeppelin/contracts/token/ERC1155/IERC1155MetadataURI.sol':
100+
'@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol',
101+
'@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol':
102+
null,
103+
'@openzeppelin/contracts/token/ERC1155/IERC1155.sol':
104+
null,
105+
'@openzeppelin/contracts/token/ERC20/ERC20Burnable.sol':
106+
'@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol',
107+
'@openzeppelin/contracts/token/ERC20/ERC20Capped.sol':
108+
'@openzeppelin/contracts/token/ERC20/extensions/ERC20Capped.sol',
109+
'@openzeppelin/contracts/token/ERC20/ERC20Pausable.sol':
110+
'@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol',
111+
'@openzeppelin/contracts/token/ERC20/ERC20Snapshot.sol':
112+
'@openzeppelin/contracts/token/ERC20/extensions/ERC20Snapshot.sol',
113+
'@openzeppelin/contracts/token/ERC20/ERC20.sol':
114+
null,
115+
'@openzeppelin/contracts/token/ERC20/IERC20.sol':
116+
null,
117+
'@openzeppelin/contracts/token/ERC20/SafeERC20.sol':
118+
'@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol',
119+
'@openzeppelin/contracts/token/ERC20/TokenTimelock.sol':
120+
'@openzeppelin/contracts/standalone/TokenTimelock.sol',
121+
'@openzeppelin/contracts/token/ERC721/ERC721Burnable.sol':
122+
'@openzeppelin/contracts/token/ERC721/extensions/ERC721Burnable.sol',
123+
'@openzeppelin/contracts/token/ERC721/ERC721Holder.sol':
124+
'@openzeppelin/contracts/token/ERC721/utils/ERC721Holder.sol',
125+
'@openzeppelin/contracts/token/ERC721/ERC721Pausable.sol':
126+
'@openzeppelin/contracts/token/ERC721/extensions/ERC721Pausable.sol',
127+
'@openzeppelin/contracts/token/ERC721/ERC721.sol':
128+
null,
129+
'@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol':
130+
'@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol',
131+
'@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol':
132+
'@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol',
133+
'@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol':
134+
null,
135+
'@openzeppelin/contracts/token/ERC721/IERC721.sol':
136+
null,
137+
'@openzeppelin/contracts/token/ERC777/ERC777.sol':
138+
null,
139+
'@openzeppelin/contracts/token/ERC777/IERC777Recipient.sol':
140+
null,
141+
'@openzeppelin/contracts/token/ERC777/IERC777Sender.sol':
142+
null,
143+
'@openzeppelin/contracts/token/ERC777/IERC777.sol':
144+
null,
145+
'@openzeppelin/contracts/utils/Address.sol':
146+
null,
147+
'@openzeppelin/contracts/utils/Arrays.sol':
148+
null,
149+
'@openzeppelin/contracts/utils/Context.sol':
150+
null,
151+
'@openzeppelin/contracts/utils/Counters.sol':
152+
null,
153+
'@openzeppelin/contracts/utils/Create2.sol':
154+
null,
155+
'@openzeppelin/contracts/utils/EnumerableMap.sol':
156+
'@openzeppelin/contracts/utils/enumerable/EnumerableMap.sol',
157+
'@openzeppelin/contracts/utils/EnumerableSet.sol':
158+
'@openzeppelin/contracts/utils/enumerable/EnumerableSet.sol',
159+
'@openzeppelin/contracts/utils/Pausable.sol':
160+
null,
161+
'@openzeppelin/contracts/utils/ReentrancyGuard.sol':
162+
null,
163+
'@openzeppelin/contracts/utils/SafeCast.sol':
164+
null,
165+
'@openzeppelin/contracts/utils/Strings.sol':
166+
null,
167+
};
168+
169+
(async () => {
170+
const base = process.argv[1] || process.env.LOCATION || '.';
171+
const files = path.join(base, '**', '*.sol');
172+
for (const [ from, to ] of Object.entries(updates)) {
173+
if (to) {
174+
await replace({ files, from, to });
175+
}
176+
}
177+
})().catch(console.error);

0 commit comments

Comments
 (0)