UNPKG

@tevm/ts-plugin

Version:
72 lines (69 loc) 2.23 kB
#!/usr/bin/env node import { mkdirSync, statSync, writeFileSync, readFileSync, existsSync } from 'fs'; import { writeFile, mkdir, stat, readFile, access } from 'fs/promises'; import path from 'path'; import { bundler } from '@tevm/base-bundler'; import { createCache } from '@tevm/bundler-cache'; import { loadConfig } from '@tevm/config'; import { runSync } from 'effect/Effect'; import { glob } from 'glob'; import * as solc from 'solc'; var fao = { existsSync, readFile, readFileSync, writeFileSync, statSync, stat, mkdirSync, mkdir, writeFile, exists: async (path2) => { try { await access(path2); return true; } catch (e) { return false; } } }; var showHelp = () => { console.log(` Usage: tevm-gen [cwd] [include] Description: Generates TypeScript type definitions for Solidity contracts. Arguments: cwd Working directory (defaults to current directory) include Glob pattern(s) for Solidity files, comma-separated (defaults to 'src/**/*.sol') Options: -h, --help Show this help message and exit `); }; var generate = (cwd2 = process.cwd(), include2 = ["src/**/*.sol"]) => { console.log("Generating types from contracts...", { dir: cwd2, include: include2 }); const files = glob.sync(include2, { cwd: cwd2 }); if (files.length === 0) { throw new Error("No files found"); } files.forEach(async (file) => { const fileName = file.split("/").at(-1); const fileDir = file.split("/").slice(0, -1).join("/"); const config = runSync(loadConfig(cwd2)); const solcCache = createCache(config.cacheDir, fao, cwd2); const plugin = bundler(config, console, fao, solc, solcCache, "@tevm/contract"); plugin.resolveTsModule(`./${file}`, cwd2, false, true).then((tsContent) => writeFile(path.join(fileDir, `${fileName}.ts`), tsContent.code)); }); }; var args = process.argv.slice(2); if (args.includes("-h") || args.includes("--help")) { showHelp(); process.exit(0); } var [userCwd, userInclude] = args; var cwd = userCwd || process.cwd(); var include = userInclude ? userInclude.split(",") : ["src/**/*.sol"]; generate(cwd, include); //# sourceMappingURL=tevm-gen.js.map //# sourceMappingURL=tevm-gen.js.map