CLI 接口是用户与 Fuel Orchestrator(forc)交互的主要方式,后者是 Sway 编程语言生态系统的主要命令行工具。本文档详细介绍了命令行接口结构、可用命令及其用法。有关包管理功能的更多信息,请参阅包管理。
forc 提供了一套用于创建、构建、测试和管理 Sway 项目的命令。该 CLI 使用 clap crate 实现参数解析,并为所有命令提供了统一的接口。
来源:forc/src/cli/mod.rs44-116 forc/src/ops/forc_init.rs16-45
Forc CLI 的结构围绕着一个主 CLI 解析器,该解析器将命令路由到其相应的处理程序。CLI 代码被组织成模块,以实现职责分离。
来源:forc/src/cli/mod.rs44-153 forc/src/cli/commands/mod.rs1-14
Forc 提供了两个用于创建新项目的命令
forc new:创建一个新目录并初始化 Sway 项目forc init:在现有目录中初始化项目这两个命令都支持创建不同类型的 Sway 项目
| 项目类型 | 标志 | 入口文件 | 描述 |
|---|---|---|---|
| 合约 | --contract | src/main.sw | 默认项目类型,实现 Sway 合约 |
| 脚本 | --script | src/main.sw | 可在 Fuel VM 上执行的脚本 |
| 谓词 | --predicate | src/main.sw | 用于交易验证的谓词 |
| 库 | --library | src/lib.sw | 可重用的代码库 |
| 工作区 | --workspace | 不适用 | Sway 包的集合 |
使用示例
# Create a new contract project
forc new my_contract
# Create a script project
forc new --script my_script
# Initialize a library in an existing directory
cd my_directory
forc init --library
来源:forc/src/cli/commands/init.rs14-44 forc/src/cli/commands/new.rs16-95 forc/src/ops/forc_init.rs16-178
forc build(别名:b):编译 Sway 项目forc check:检查项目错误而不生成输出forc test(别名:t):运行 Sway 项目的测试forc clean:移除编译器输出产物forc update:更新项目依赖项forc parse-bytecode:将字节码文件解析为调试格式forc addr2line:将操作码地址映射到源代码位置forc contract-id:计算合约 IDforc predicate-root:计算谓词根forc template:从模板创建项目forc completions:生成 shell 补全来源:forc/src/cli/commands/parse_bytecode.rs14-83 forc/src/cli/commands/addr2line.rs16-157
Forc 具有可扩展的插件系统,允许用户添加自定义功能。插件是名为 forc-<plugin-name> 的可执行文件,位于系统 PATH 中。
命令 forc plugins 列出所有可用插件。选项包括
--paths(-p):显示插件的完整路径--describe(-d):显示插件描述当命令未被识别为内置命令时,Forc 会在系统 PATH 中搜索名为 forc-<command> 的可执行文件,并使用提供的参数执行它。
来源:forc/src/cli/plugin.rs11-97 forc/src/cli/commands/plugins.rs21-147
所有 Forc 命令都支持以下全局选项
| 选项 | 短期 | 描述 |
|---|---|---|
--verbose | -v | 增加输出详细程度(可多次使用) |
--silent | -s | 禁止所有输出 |
--log-level | -L | 设置特定的日志级别 |
示例
# Verbose output
forc build -v
# Silent operation
forc test --silent
# Specific log level
forc build --log-level debug
创建新项目时,Forc 根据项目类型使用默认模板
每个项目还包括
Forc.toml(包含项目元数据).gitignore(包含常见排除项)来源:forc/src/utils/defaults.rs3-101
Forc CLI 的主要入口点是 run_cli() 函数,它会