ABI 源词
此软件包允许您从 ABI 文件生成 TypeScript 或 Python 合同包装 . 它的灵感很大 Geth 双子体 但采取不同的做法. 您可以编写您的自定义手提栏模板, 使您能够将生成的代码与现有的常规无缝地整合到您现有的代码库中 .
给 是用于生成 0x.js 所使用的合同包装的模板.
安装
yarn add -g @0x/abi-gen
使用量
$ abi-gen --help
Options:
--help Show help [boolean]
--version Show version number [boolean]
--abis Glob pattern to search for ABI JSON files
[string] [required]
--output, -o, --out Folder where to put the output files [string] [required]
--partials Glob pattern for the partial template files [string]
--template Path for the main template file that will be used to
generate each contract [string] [required]
--backend The backing Ethereum library your app uses. For
TypeScript, either 'web3' or 'ethers'. Ethers
auto-converts small ints to numbers whereas Web3 doesn't.
For Python, the only possibility is Web3.py
[string] [choices: "web3", "ethers"] [default: "web3"]
--network-id ID of the network where contract ABIs are nested in
artifacts [number] [default: 50]
--language Language of output file to generate
[string] [choices: "TypeScript", "Python"] [default: "TypeScript"]
Examples:
abi-gen --abis 'src/artifacts/**/*.json' Full usage example
--out 'src/contracts/generated/'
--partials
'src/templates/partials/**/*.handlebars'
--template
'src/templates/contract.handlebars'
你必须通过一个 阴影 您的 abi 文件所在的模板. TL; DR - 这是0x.js的示例.
--abis 'src/artifacts/@(Exchange|Token|TokenTransferProxy|EtherToken|TokenRegistry).json
我们可以用 --abis 'src/artifacts/*.json 但我们想排除一些abi文件.
ABI 文件应该是 旋转 合同文物(带有ABI键的JSON对象)或JSON abi阵列.
您还需要指定每个合同所使用的主模板的位置 --template 以及部分模板 --partials 以后可以从主机上使用.
如何写自定义模板 ?
最好的开始方法是复制 0x.js 模板 并开始调整 满足你的需要.
我们用 手柄栏 引擎盖下的模板引擎.
您需要使用主模板 contract.mustache。它将用来生成每个合同包装。 尽管 - 你不需要,而且也许不应该将你的逻辑全部写入一个模板文件. 你可以写 部分模板 只要它们位于一个部分文件夹内,它们就会被登记和提供.
我的模板中有哪些数据/内容?
现在,你没有得到很多的方法 ABI,一些有用的帮助 和一个合同名称,因为它已经足够 我们的使用案例, 但如果你需要别的东西 - 创建一个公关. 见 类型定义 我们所传递的.
输出文件
输出文件将在指定的输出文件夹内生成. 如果您的文件夹中已经有一些文件, 它们将被覆盖 .
文件名称、类别和方法将转换为特定目标语言的标准命名惯例.
捐款
我们欢迎更广泛的社会作出改进和修正! 要在此包中报告错误, 请在此寄存器中创建一个问题 .
请读我们的 捐款准则 在开始之前.
安装依赖关系
如果您没有启用纱线工作空间( Yarn < v1.0) - 启用它们 :
yarn config set workspaces-experimental true
然后安装依赖关系
yarn install
您还需要安装 Python 3 , 以便构建和运行命令行界面的测试, 该界面与 Python 3 集成 yarn build, (中文(简体) ), yarn test,以及 yarn lint 命令如下。 更具体地说,你的地方 pip 应解决 Python 3 版本 pip,而不是Python 2.x版本.
构建
要构建此软件包和它所依赖的所有其他单列波软件包,请从单列波根目录中运行以下内容:
PKG=@0x/abi-gen yarn build
或在变化中不断重建:
PKG=@0x/abi-gen yarn watch
干净
yarn clean
林特
yarn lint
CLI 测试
输入的文件 test-cli/ 用于测试根据一套固定合同运行命令行工具所产生的输出。 这些测试与 yarn build, (中文(简体) ), yarn test等,但可以根据以下指令独立运行.
汇编固定合同:
yarn compile:sol
将定点合同编入ABI是提前完成的,ABI将登记到 git,以加快测试运行时间。 因此,本汇编并非作为《公约》的一部分自动进行 yarn build,在对固定合同作出任何修改之后,必须明确进行;对固定合同的任何拟议修改都应附有对相应的汇编文物的修改.
生成包件(如果是TypeScript,则创建包件)并构建单元测试:
yarn test_cli:build
运行单元测试并检查生成的包装对已知包装的 diffs :
yarn test_cli
已知的好包装器以前已经投入使用,并保存在 test-cli/expected-output/{language}。它们旨在提供样本输出,应与生成代码同步。 修改此项目时或 @0x/abi-gen-templates运行 yarn test_cli:prebuild 生成新代码 test-cli/output/{language},然后手动复制到 test-cli/expected-output/{language}。 。 。 .
根据生成的代码运行 linters :
yarn test_cli:lint