菜单

命令行接口

相关源文件

CLI 接口是用户与 Fuel Orchestrator(forc)交互的主要方式,后者是 Sway 编程语言生态系统的主要命令行工具。本文档详细介绍了命令行接口结构、可用命令及其用法。有关包管理功能的更多信息,请参阅包管理

概述

forc 提供了一套用于创建、构建、测试和管理 Sway 项目的命令。该 CLI 使用 clap crate 实现参数解析,并为所有命令提供了统一的接口。

来源:forc/src/cli/mod.rs44-116 forc/src/ops/forc_init.rs16-45

CLI 架构

Forc CLI 的结构围绕着一个主 CLI 解析器,该解析器将命令路由到其相应的处理程序。CLI 代码被组织成模块,以实现职责分离。

来源:forc/src/cli/mod.rs44-153 forc/src/cli/commands/mod.rs1-14

核心命令

项目创建

Forc 提供了两个用于创建新项目的命令

  • forc new:创建一个新目录并初始化 Sway 项目
  • forc init:在现有目录中初始化项目

这两个命令都支持创建不同类型的 Sway 项目

项目类型标志入口文件描述
合约--contractsrc/main.sw默认项目类型,实现 Sway 合约
脚本--scriptsrc/main.sw可在 Fuel VM 上执行的脚本
谓词--predicatesrc/main.sw用于交易验证的谓词
--librarysrc/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/src/cli/mod.rs65-80

实用命令

  • forc parse-bytecode:将字节码文件解析为调试格式
  • forc addr2line:将操作码地址映射到源代码位置
  • forc contract-id:计算合约 ID
  • forc 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/src/cli/mod.rs45-62

默认模板

创建新项目时,Forc 根据项目类型使用默认模板

  • 合约:带有 ABI 和实现的简易合约
  • 脚本:带有主函数和可配置值的脚本
  • 谓词:返回 true 的简单谓词
  • :带有注释指导的空库
  • 工作区:空工作区配置

每个项目还包括

  • Forc.toml(包含项目元数据)
  • .gitignore(包含常见排除项)

来源:forc/src/utils/defaults.rs3-101

CLI 入口点

Forc CLI 的主要入口点是 run_cli() 函数,它会

  1. 解析命令行参数
  2. 根据详细程度标志设置日志记录
  3. 调度到相应的命令处理程序
  4. 如果没有匹配的内置命令,则执行插件命令

来源:forc/src/cli/mod.rs118-153 forc/src/main.rs3-6