一、概要设计
1、架构图 | architecture diagram
2、move编译器构建原理图
二、详细设计
1、move编译器接口
1.1 支持的命令
$mc support-cmds [OPTIONS]
命令选项:
选项 | 描述 |
---|---|
| 输出JSON格式 |
标准输出:
{ "code": 0, "message": "success", "data": [ "compile", "test", "package" ] }
错误输出:
1.2 编译命令
$mc compile [OPTIONS]
命令选项:
选项 | 描述 |
---|---|
| 输出JSON格式 |
--path | 工程路径 |
标准输出:
{ "code": 0, "message": "success" }
错误输出:
{ "code": 1, "message": "compile fail", "data": { "diagnostics": [] } }
1.3 测试命令
$mc test [OPTIONS]
命令选项:
选项 | 描述 |
---|---|
| 输出JSON格式 |
--path | 工程路径 |
--filter | 需要测试的函数 |
标准输出:
{ "code": 0, "message": "success", "data": { "test_cases": [], } }
错误输出:
{ "code": 1, "message": "compile fail", "data": { "diagnostics": [] } }
1.4 编译命令
$mc package [OPTIONS]
命令选项:
选项 | 描述 |
---|---|
| 输出JSON格式 |
--path | 工程路径 |
标准输出:
{ "code": 0, "message": "success", "data": { "target_path": "", } }
错误输出:
{ "code": 1, "message": "compile fail", "data": { "diagnostics": [] } }
2、move-api
2.1 package.d.ts
import { WasmFs } from '@wasmer/wasmfs'; export interface IDependency { git?: string; rev?: string; local?: string; } export interface IMovePackage { name?: string; version?: string; addresses?: Map<string, string>; dependencies?: Map<string, IDependency>; devDependencies?: Map<string, IDependency>; build(): void; test(): void; package(): void; } export declare type MoveOptions = { packagePath: string; test: boolean; alias?: Map<string, string>; initFunction?: string; }; export declare function createMovePackage(wasmfs: WasmFs, opts: MoveOptions): IMovePackage;