Procedural SafeCast.sol generation (#3245)
This commit is contained in:
29
scripts/generate/run.js
Executable file
29
scripts/generate/run.js
Executable file
@ -0,0 +1,29 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
const fs = require('fs');
|
||||
const format = require('./format-lines');
|
||||
|
||||
function getVersion (path) {
|
||||
try {
|
||||
return fs
|
||||
.readFileSync(path, 'utf8')
|
||||
.match(/\/\/ OpenZeppelin Contracts \(last updated v\d+\.\d+\.\d+\)/)[0];
|
||||
} catch (err) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
for (const [ file, template ] of Object.entries({
|
||||
'utils/math/SafeCast.sol': './templates/SafeCast',
|
||||
'mocks/SafeCastMock.sol': './templates/SafeCastMock',
|
||||
})) {
|
||||
const path = `./contracts/${file}`;
|
||||
const version = getVersion(path);
|
||||
const content = format(
|
||||
'// SPDX-License-Identifier: MIT',
|
||||
(version ? version + ` (${file})\n` : ''),
|
||||
require(template).trimEnd(),
|
||||
);
|
||||
|
||||
fs.writeFileSync(path, content);
|
||||
}
|
||||
Reference in New Issue
Block a user