184 次发布
新 0.4.0-dev.20 | 2024 年 8 月 23 日 |
---|---|
0.4.0-dev.15 | 2024 年 7 月 31 日 |
0.3.0-beta-dev.42 | 2024 年 3 月 27 日 |
0.3.0-beta-dev.29 | 2022 年 12 月 22 日 |
0.0.3 | Jul 29, 2021 |
#25 在 魔法豆
1,271 每月下载
用于 2 crates
3MB
26K SLoC
holochain_cli_sandbox
一个库和 CLI 工具,用于帮助创建、运行和交互式使用沙箱化的 Holochain 导航环境,用于测试和开发目的。
CLI
命令行工具 hc sandbox
可以轻松运行您正在开发或他人发送给您的小程序。它被设计为使用合理的默认设置,但在需要时也提供可配置性。沙箱默认存储在系统临时目录的子目录中,并在您生成沙箱时,其路径引用将保存在当前工作目录的 .hc
文件中。如果您希望将沙箱持久化到更永久的位置,您可以指定根目录和/或沙箱目录的名称。
安装
快速安装
按照Holochain开发者门户上的快速入门指南,安装所有Holochain开发工具,包括hc
CLI和官方扩展。
通过Cargo安装
要求
构建
您可以通过crates.io安装hc-sandbox
CLI工具
cargo install holochain_cli_sandbox
或者您也可以安装整个hc
CLI工具,其中包含作为子命令的hc-sandbox
cargo install holochain_cli
以下示例假设您已安装了完整的hc
而不是仅仅安装hc-sandbox
常见用法
最佳起点是
hc sandbox --help
这将比这个readme更更新
运行
此命令可用于生成和运行导体沙箱
hc sandbox run --help
# or shorter
hc sandbox r -h
生成
生成新的导体沙箱并将hApps安装到其中
在包含您的捆绑hApp的文件夹中(见关于hc-bundle
命令的文档),您可以使用以下命令生成和运行一个新的沙箱:
hc sandbox generate
# or shorter
hc sandbox g
您还可以一次生成多个沙箱
hc sandbox generate --num-sandboxes 5
此命令将在您的系统临时目录中创建随机命名的目录,并将它们的路径存储在您当前工作目录中的.hc
文件中。如果您之前已创建了沙箱,新沙箱的路径将被附加到.hc
文件的末尾。请注意,如果您的系统定期清理其临时目录,路径可能最终指向不存在的沙箱。
您还可以使用--root
选项(根目录必须事先存在)指定持久目录以在其中创建沙箱,以及使用--directories
选项指定单个沙箱的目录名称。确保目录名称的数量与您尝试创建的沙箱数量相匹配;如果您没有指定足够的目录名称,其余的将被自动生成。
# a randomly named sandbox directory in the following directory
hc sandbox generate --root my-sandboxes/
# three explicitly named sandboxes in the system temp directory
hc sandbox generate --num-sandboxes 3 --directories alice,bob,carol
虽然这些目录对于创建测试固定值很有用,但它们在其他机器上以及在不同测试运行中的有用性有限,因为生成的导体配置具有机器相关的路径,并且数据库在每次运行时都会积累数据。
最后,您可以通过最后的network
子命令指定沙箱将使用哪种网络传输类型来相互通信。
hc sandbox generate network quic
您还可以使用--run
选项在同一个命令中生成和运行。传递给-r
的参数是逗号分隔的端口号列表,用于绑定沙箱的应用程序API WebSocket,其中0
表示应该自动选择端口号。再次提醒,确保端口号的数量与要运行的沙箱数量相匹配;如果没有指定足够的端口号,剩余的沙箱将不会运行。
hc sandbox generate --num-sandboxes 5 --run 0,9500,9501,0,0 ./elemental-chat.happ
作为一个完整的示例,这将在一个名为my-sandboxes
的子目录中生成并运行五个命名沙箱,应用程序ID设置为my-app
,使用当前目录中的elemental-chat.happ
,并配置为使用localhost
的QUIC网络。
当您当前工作目录中只有一个hApp时,您不需要指定hApp的文件名。
hc sandbox generate \
--app-id "my-app" \
--num-sandboxes 5 \
--root my-sandboxes/ \
--directories alice,bob,carol,dave,eve \
--run 0,0,0,0,0 \
./elemental-chat.happ \
network quic
创建
创建“空”的沙箱;即没有安装应用的沙箱。这可以用于测试通过管理员API控制导体的程序实现,例如应用程序启动器。大多数hc generate
的选项也适用于hc create
hc sandbox create \
--num-sandboxes 5 \
--root my-sandboxes/ \
--directories alice,bob,carol,dave,eve \
--run 0,0,0,0,0 \
network quic
调用
允许在一个或多个正在运行的沙箱上调用导体管理员API API。尽管API函数接收MessagePack序列化数据作为输入,但此命令允许您方便地以命令行参数的形式传递它们。要获取所有可用管理员API函数的列表,请运行
hc sandbox call --help
[... options and flags ...]
SUBCOMMANDS:
add-admin-ws Calls AdminRequest::AddAdminInterfaces and adds another admin interface
add-agents Calls AdminRequest::AddAgentInfo. _Unimplemented_
add-app-ws Calls AdminRequest::AttachAppInterface and adds another app interface
disable-app Calls AdminRequest::DisableApp and disables the installed app
dump-state Calls AdminRequest::DumpState and dumps the current cell's state. TODO: Add pretty print. TODO:
Default to dumping all cell state
enable-app Calls AdminRequest::EnableApp and activates the installed app
help Prints this message or the help of the given subcommand(s)
install-app Calls AdminRequest::InstallApp and installs a new app
list-agents Calls AdminRequest::RequestAgentInfo and pretty prints the agent info on this conductor
list-app-ws Calls AdminRequest::ListAppInterfaces
list-apps Calls AdminRequest::ListApps
list-cells Calls AdminRequest::ListCellIds
list-dnas Calls AdminRequest::ListDnas
new-agent Calls AdminRequest::GenerateAgentPubKey
register-dna Calls AdminRequest::RegisterDna and registers a Dna. You can only use a path or a hash not both
uninstall-app Calls AdminRequest::UninstallApp
有关函数输入参数的信息,请运行
hc sandbox call <api-function> --help
# for example:
hc sandbox call disable-app --help
hc-sandbox-call-disable-app 0.1.3
Calls AdminRequest::DisableApp and disables the installed app
USAGE:
hc sandbox call disable-app <app-id>
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
ARGS:
<app-id> The InstalledAppId to disable
列出和清理
这些命令允许您列出当前目录(从.hc
文件)中持久化的沙箱。您可以使用索引
hc sandbox list
输出
hc-sandbox:
Sandboxes contained in `.hc`
0: /tmp/KOXgKVLBVvoxe8iKD4iSS
1: /tmp/m8VHwwt93Uh-nF-vr6nf6
2: /tmp/t6adQomMLI5risj8K2Tsd
然后调用或运行单个沙箱(或子集)
hc sandbox r -i=0,2
您可以使用以下命令删除所有沙箱:
hc sandbox clean
这将删除当前工作目录中.hc
文件中引用的沙箱目录,以及.hc
文件本身。
库
此crate还可以用作库,以便您可以创建更复杂的沙箱/管理员调用。请参阅文档
cargo doc --open
和示例。
依赖项
77–115MB
~2M SLoC