#at-proto #cli-client #protocols #命令行 #bsky #did

bin+lib adenosine-cli

AT 协议和 bsky.app 的简单非正式命令行客户端

6 个版本 (3 个重大更新)

0.4.0 2023年8月21日
0.3.0 2023年3月5日
0.2.0 2022年12月20日
0.1.2 2022年11月22日

网络编程 中排名 1282

每月下载量 46

AGPL-3.0 或更高版本

215KB
3.5K SLoC

adenosine-cli: AT 协议 (atproto.com) 命令行客户端

这是一个简单、面向爱好者的 AT 协议(atproto.com)客户端。有点像 http 命令(HTTPie)。

这是一个完全“委托”的客户端,这意味着它不会在本地存储或缓存任何用户内容;所有操作都是通过向个人数据服务器(PDS)发起请求来完成的,这通常是一个远程服务。

目前这个工具的唯一实际用途是玩弄原型实现,可能在开发它们的同时。

这个客户端目前不会对 Lexicons 执行任何模式验证,无论是在编译时还是在运行时(例如,动态获取 Lexicons)。Bluesky Lexicon(bsky.app)通过辅助命令部分支持。

有一个手册页,其中包含使用细节和示例。

功能

  • 通用的 XRPC 调用(GET 和 POST)
  • com.atproto Lexicon 实现
  • repo CAR 文件导入/导出
  • 部分 app.bsky Lexicon 实现
  • 完整的 app.bsky Lexicon 实现
  • did:plc 服务器交互和链验证
  • 使用 JSON 标志以美观方式打印 bsky 记录(例如,时间线)
  • 测试覆盖率

可能未来的功能

  • 记录/请求的 Lexicon 模式验证
  • DID 解析到仓库位置(独立于 PDS)
  • 在 homedir 点文件中保存登录/配置

安装

adenosine-cli是用 Rust 实现的,理论上可以在多个平台上以二进制形式分发。

待办事项:为 Linux 创建 Debian 软件包

否则,您需要从源代码构建 CLI 工具。安装 Rust 编程语言工具链的最新版本(例如,使用 rustup)。

顶级工作区包含 PDS 代码,它有一个庞大的依赖树,构建速度较慢。如果您只需要 CLI,请在运行任何 cargo 命令之前进入 adenosine-cli 目录

cd adenosine-cli
cargo install

快速入门

您需要一个实际的PDS服务器来与之交互。截至2022年11月,这可能是一个独立的实现,如adenosine-pds,或者更正式的bluesky-social/atproto原型(参见本地atproto开发快速入门)。

设置ATP_PDS_HOST环境变量。然后注册一个测试账户,或者为现有账户创建一个新的会话,并将JWT令牌保存到ATP_AUTH_TOKEN

# default port for bluesky-social/atproto implementation
export ATP_PDS_HOST=http://localhost:2583

# default port for adenosine-pds implementation
export ATP_PDS_HOST=http://localhost:3030

# register a new account
adenosine account register -u voltaire.test -p bogus -e voltaire@example.com
{
  "did": "did:plc:yqtuksvatmmgngd5nkkw75hn",
  "jwt": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkaWQ6cGxjOnlxdHVrc3ZhdG1tZ25nZDVua2t3NzVobiIsImlhdCI6MTY2Njk5NjMwNn0.MMQa4JIQdwvhy-rjJ0kO-z8-KdoOL0Lto9JtOkK-lwE",
  "username": "voltaire.test"
}

export ATP_AUTH_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkaWQ6cGxjOnlxdHVrc3ZhdG1tZ25nZDVua2t3NzVobiIsImlhdCI6MTY2Njk5NjMwNn0.MMQa4JIQdwvhy-rjJ0kO-z8-KdoOL0Lto9JtOkK-lwE

# to clear the auth token env variable in current shell
unset ATP_AUTH_TOKEN

# create a new session (login) for existing account
adenosine account login -u voltaire.test -p bogus
{
  "did": "did:plc:yqtuksvatmmgngd5nkkw75hn",
  "jwt": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkaWQ6cGxjOnlxdHVrc3ZhdG1tZ25nZDVua2t3NzVobiIsImlhdCI6MTY2Njk5NjQxNX0.j2wcF1g9NxT_1AvYRiplNf_jtK6S81y3L38AkcBwOqY",
  "name": "voltaire.test"
}

export ATP_AUTH_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkaWQ6cGxjOnlxdHVrc3ZhdG1tZ25nZDVua2t3NzVobiIsImlhdCI6MTY2Njk5NjQxNX0.j2wcF1g9NxT_1AvYRiplNf_jtK6S81y3L38AkcBwOqY

您可以将ATP_PDS_HOSTATP_AUTH_TOKEN值保存到~/.bashrc中,这样您就不需要每次都输入它们。

现在您可以开始发帖和探索了

adenosine status

adenosine bsky post "gruel again for breakfast"
{
  "cid": "bafyreig2aqlsg4arslck64wbo2hnhe6k2a4z3z2sjfzh3uapv3a4zjld7e",
  "uri": "at://did:plc:yqtuksvatmmgngd5nkkw75hn/app.bsky.post/3jg5zkr322c2a"
}

adenosine ls at://voltaire.test

开发和贡献

目前支持的最小Rust版本(MSRV)是1.61,使用2021版Rust。

欢迎贡献、讨论、错误报告和手写信件。这是一个低投入的业余项目,因此可能不会提供高接触支持、功能请求、增长策略等。

源代码许可证是AGPLv3。请在任何初始贡献中承认这一点,并说明您是否以及如何希望作为贡献者得到认可(例如,姓名和可选的URL)。

依赖关系

~41–56MB
~1M SLoC