#api-bindings #wiki #graphql #js #graphql-client #fuse #cli-client

bin+lib wikijs

Rust 编写的 Wiki.js 的 API 绑定、CLI 客户端和 FUSE 文件系统

4 个版本

0.2.1 2024 年 3 月 15 日
0.2.0 2023 年 12 月 4 日
0.1.1 2023 年 9 月 17 日
0.1.0 2023 年 9 月 17 日
0.1.0-rc0 2023 年 9 月 2 日

#266 in 文件系统

Download history 86/week @ 2024-04-20

每月 138 次下载

AGPL-3.0

515KB
14K SLoC

wikijs-rs

Rust 编写的 Wiki.js 的 API 绑定、CLI 客户端和 FUSE 文件系统。

Tests Crates.io Crates.io

包含什么?

  • :Wiki.js 完整 GraphQL API 的 Rust 绑定以及通过 REST API 的资产上传和下载。 可用,但未经实战测试
  • CLI:用于编辑页面等的命令行客户端。 可用,但尚未完成
  • 文件系统:一个可以挂载您的维基并在本地工作的 FUSE 文件系统。 尚不可用,处于开发中

该库基本上提供了一个结构 Api,您可以将其提供给 Wiki.js 实例的 URL 和凭证,并且它公开了所有不同 GraphQL 查询和变异以及通过 REST API 的资产上传和下载的功能。有关详细信息,请参阅 文档,否则这里有一个简短的示例

用法

将以下依赖项添加到您的 Cargo.toml

[dependencies]
wikijs = "0.2"

创建 Api 的实例并使用其功能

use wikijs::{Api, Credentials};

let api = Api::new(
    "http://127.0.0.1:3000".to_string(),
    Credentials::Key("my-api-key".to_string()),
).unwrap();
println!("{:?}", api.page_get(1).unwrap());

CLI

此包附带一个名为 wikijs 的命令行工具,可以直接从 CLI 与您的 Wiki.js 实例交互。除了公开库功能外,它还提供了编辑页面等附加功能。

构建

cargo build --features=cli

安装

CLI 通过 cargo 打包,以及 Debian 和 AUR 软件包,有关详细信息,请参阅 安装

用法

工具从参数或环境变量中获取 URL 和凭证。对于后者选项,请使用以下内容

export WIKI_JS_BASE_URL=https://wiki.mydomain.com
export WIKI_JS_API_KEY=MY-SUPER-SECRET-API-KEY

或者对于密码认证使用

export WIKI_JS_USERNAME="USERNAME or EMAIL"
export WIKI_JS_PASSWORD="PASSWORD"

注意,如果您使用的是默认认证提供程序以外的其他认证提供程序,例如 LDAP,您必须将变量 WIKI_JS_AUTH_PROVIDER 设置为其 UUID。

然后您可以创建一个名为 test 的页面,列出页面并使用以下方法编辑它:

wikijs page create test
wikijs page list
wikijs page edit <ID>

其中 ID页面列表 输出中找到。

文件系统

警告:目前尚不可用!请小心!

如果您想对此进行PR,请通过问题进行协调,因为我在此正在重构此代码,以添加缓存层并包含资源。

此crate还提供了名为 wikifs 的FUSE文件系统,以将您的Wiki.js实例挂载到本地,并使用您喜欢的任何程序查看和操作它。

构建

cargo build --features=fuse

安装

cargo install wikijs --features=fuse

用法

工具从参数或环境变量中获取 URL 和凭证。对于后者选项,请使用以下内容

export WIKI_JS_BASE_URL=https://wiki.mydomain.com
export WIKI_JS_API_KEY=MY-SUPER-SECRET-API-KEY

然后您可以这样挂载文件系统

mkdir /tmp/wikijs
wikifs /tmp/wikijs

然后在另一个终端中使用它

cd /tmp/wikijs
ls
cat test.md

前提是您在wiki中有位于 /testmarkdown 页面。

安装

这些说明目前仅适用于CLI,因为FUSE文件系统尚未准备好发布。

Cargo

运行以下命令从 crates.io 安装CLI

cargo install wikijs --features=cli

Arch

CLI可在 AUR 上找到。

Debian和Ubuntu

CLI可通过 deb.gierens.de 获得。GPG公钥位于此存储库下的 deb.asc

首先确保您有 gpg 命令,如果没有,请通过以下方式安装它

sudo apt update
sudo apt install -y gpg

然后通过以下方式安装 wikijs-rs

sudo mkdir -p /etc/apt/keyrings
wget -qO- https://raw.githubusercontent.com/gierens/wikijs-rs/main/deb.asc | sudo gpg --dearmor -o /etc/apt/keyrings/gierens.gpg
echo "deb [signed-by=/etc/apt/keyrings/gierens.gpg] http://deb.gierens.de stable main" | sudo tee /etc/apt/sources.list.d/gierens.list
sudo chmod 644 /etc/apt/keyrings/gierens.gpg /etc/apt/sources.list.d/gierens.list
sudo apt update
sudo apt install -y wikijs-rs

贡献

请使用小的提交,每次只更改单个模块,并根据 conventional commits 命名它们。

特别容易贡献的两个部分,尤其是对于初学者,是编写docstrings和集成测试。除此之外,CLI还需要实现许多库函数。

请先检查问题和PR,也许您可以创建一个问题或草案PR,以便我们可以协调工作。这对于FUSE文件系统尤其重要,因为我在此正在重构它。

测试

由于此代码依赖于Wiki.js,因此位于 tests/ 的集成测试无法在没有它的条件下进行。因此,使用 docker-compose.yml 运行本地实例,该实例在端口80上。此设置也用于CI工作流程。请注意,许多测试假设wiki是新的,没有页面,没有其他内容...这就是为什么没有Docker卷,这样每次重建都会丢失所有以前的数据。这也意味着在测试时,您应该确保自己从实例中删除了所有内容。

此外,测试还假设wiki具有以下管理员凭据

  • 电子邮件: admin@admin.com
  • 密码: password

要自动在wiki初始启动时设置这些凭据,您可以使用 scripts/finalize_wiki_setup.sh,它还假设wiki在 http://127.0.0.1:80 上运行。

许可

该项目受 AGPL-3.0 许可,因为 Wiki.js 也是。

依赖项

~5–23MB
~338K SLoC