#博客文章 #博客 #命令行 #密钥文件 #API 绑定 #mataroa

应用 mataroa-cli

为 mataroa.blog 提供的非官方 CLI

3 个版本

0.1.2 2024 年 1 月 9 日
0.1.1 2024 年 1 月 9 日
0.1.0 2024 年 1 月 9 日

#408命令行工具

MIT/Apache

52KB
850

mataroa-cli CI 状态 Crates.io 文档 许可: MIT OR Apache-2.0 Rust 版本: 无

[!注意] 此 CLI 与 mataroa 无关,并且与 https://github.com/mataroa-blog/mataroa-cli 没有关联

为 mataroa.blog 提供的 CLI

这是一个为 mataroa.blog 提供的 CLI,mataroa.blog 是一个面向极简主义者的裸博客平台。

安装

使用 cargo

cargo install mataroa-cli

从源代码

git clone https://github.com/knutwalker/roa.git
cd roa
make
sudo make install

用法

roa --help

API 密钥

为了使用此 CLI,您需要一个 API 密钥。您可以通过访问 mataroa 并访问 https://mataroa.blog/api/docs/ 来获取一个。

您可以通过以下三种方式之一(按优先级排序)传递 API 密钥

  1. 通过提供包含密钥的文件
  2. 通过提供打印密钥的命令
  3. 直接提供密钥

提供文件

--api-key-file 标志设置为文件的路径。文件必须仅包含 API 密钥作为其内容。允许尾随换行符。

这也可以通过 MATAROA_API_KEY_FILE 环境变量来设置。使用标志将覆盖环境变量。使用环境变量允许您在使用 CLI 时无需每次都传递 API 密钥。

示例文件可以存储在 ~/.config/mataroa/api-key

提供命令

--api-key-cmd 标志设置为打印 API 密钥的命令。将执行该命令,并使用其输出作为 API 密钥。该命令不得产生任何除 API 密钥以外的输出。允许尾随换行符。

这也可以通过环境变量 MATAROA_API_KEY_CMD 来设置。使用标志会覆盖环境变量。使用环境变量允许用户在使用 CLI 时无需每次都传递 API 密钥。

一个示例命令可以是 pass Mataroa/api-key

直接提供密钥

--api-key 标志设置为 API 密钥。

这也可以通过环境变量 MATAROA_API_KEY 来设置。使用标志会覆盖环境变量。使用环境变量允许用户在使用 CLI 时无需每次都传递 API 密钥。

这是最不安全的选项,因为 API 密钥将出现在壳进程列表中。

命令

CLI 支持以下命令(您可以通过运行 roa --help 来查看所有命令,以及 roa <command> --help 来查看特定命令的帮助信息)

  • listls:列出所有帖子
  • createnew:创建帖子
  • get:获取帖子
  • updateedit:更新帖子
  • deleterm:删除帖子

命令输出

所有命令都会在标准输出上打印出供人类消费的结果。

此外,所有命令都支持 --json 标志,该标志会打印出 mataroa API 的 JSON 响应。请注意,这与常规输出不完全相同,因为后者在打印之前可能对结果进行了一些后处理。

所有命令也支持一个 --dry-run 标志,该标志会打印出一个 curl 命令,您可以通过执行该命令来达到与命令相同的结果。

日期格式

published_at 的值可以通过以下三种方式之一提供

  • 格式为 YYYY-MM-DD 的日期
  • 文本描述,例如 tomorrownext weeknext monthtodaynow
  • draftnone

将日期设置为未来的日期会导致帖子在该日期安排发布。使用最后一个选项将发送空字符串 "" 作为值,这将导致帖子成为草稿。通常,published_at 字段是可选的,因此您可以完全省略它。

POST <> 文件映射

一些命令接受文件作为输入。get 也支持将结果写入文件。

该文件是一个表示帖子主体的 markdown 文件,并通过对前置内容进行额外处理。

前置内容是文件开头的 YAML 或 JSON 代码块。它可以包含 titleslugpublished_at 字段。根据命令的不同,其中一些字段是必需的。在前置内容之前,可以有前导 h1,它将被用作博客帖子的标题。前置内容中的显式标题将覆盖 h1 标题。

h1 和前置内容将被从文档中删除,并且不是正文的一部分。正文是前置内容之后的所有内容。

示例文档

    # My first post
    
    ```yml
    published_at: "2015-10-21"
    ```
    
    This is the body of the post.

将此文件作为 create 的输入将创建一个标题为 My first post,发布日期为 2015-10-21,正文内容为 This is the body of the post. 的帖子。

可以使用带有 --output 标志的 get 命令创建表示现有帖子的文件。

roa get --output post.md my-first-post

文件与服务器不同步,因此如果您通过其他方式更新帖子(而不是从文件读取),则需要手动更新文件(或再次运行 get)。

允许通过标志指定其值(例如 --title)的命令将在提供的情况下使用标志的值,即使文件中包含值。

每个命令的文件使用
create

文件是必需的,并且必须包含一个标题;可以直接在文件中以 h1 或在 frontmatter 中的 title 的形式定义。也可以通过 --title 标志提供。

published_at 值可以设置,但不是必需的。

slug 值将被忽略,因为这将由 API 生成。

get

可以使用 --output 标志创建文件。如果文件已存在,则将其覆盖。如果没有提供文件,则帖子将被打印到 stdout。

文件将包含一个 h1 标题和带有 slugpublished_at 字段以及实际帖子正文的 yml frontmatter。

update

文件是可选的,可用于更新帖子。必须通过 --slug 标志或 frontmatter 中的 slug 字段提供 slug。也可以使用 --new-slug 标志或更改 frontmatter 中的 slug 字段的内容(在这种情况下,需要通过 --slug 标志提供用于找到要更新的帖子的 slug)来更改 slug

titlepublished_atbody 字段都是可选的,并且都可以更改。

deletelist

这两个命令都不使用文件。

批处理命令

CLI 还支持 batch 命令,允许您一次性运行多个命令。命令从文件中读取,每行一个命令。忽略空行和以 #;// 开头的行。命令将像直接传递给 CLI 一样解析。

示例

list
new post.md
edit --slug post---pub draft
rm post

许可证

mataroa-cli 在以下任一许可证下授权,由您选择


依赖关系

~25–36MB
~664K SLoC