123456789101112131415161718192021222324252627282930313233343536 |
- #!/usr/bin/env node
- const cp = require('child_process');
- const fs = require('fs');
- const path = require('path');
- const format = require('./format-lines');
- function getVersion(path) {
- try {
- return fs.readFileSync(path, 'utf8').match(/\/\/ OpenZeppelin Contracts \(last updated v[^)]+\)/)[0];
- } catch (err) {
- return null;
- }
- }
- for (const [file, template] of Object.entries({
- 'utils/math/SafeCast.sol': './templates/SafeCast.js',
- 'utils/structs/EnumerableSet.sol': './templates/EnumerableSet.js',
- 'utils/structs/EnumerableMap.sol': './templates/EnumerableMap.js',
- 'utils/Checkpoints.sol': './templates/Checkpoints.js',
- })) {
- const script = path.relative(path.join(__dirname, '../..'), __filename);
- const input = path.join(path.dirname(script), template);
- const output = `./contracts/${file}`;
- const version = getVersion(output);
- const content = format(
- '// SPDX-License-Identifier: MIT',
- ...(version ? [version + ` (${file})`] : []),
- `// This file was procedurally generated from ${input}.`,
- '',
- require(template),
- );
- fs.writeFileSync(output, content);
- cp.execFileSync('prettier', ['--write', output]);
- }
|