3 个版本
0.1.2 | 2024 年 1 月 9 日 |
---|---|
0.1.1 | 2024 年 1 月 9 日 |
0.1.0 | 2024 年 1 月 9 日 |
#408 在 命令行工具
52KB
850 行
mataroa-cli
[!注意] 此 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 密钥
- 通过提供包含密钥的文件
- 通过提供打印密钥的命令
- 直接提供密钥
提供文件
将 --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
来查看特定命令的帮助信息)
list
或ls
:列出所有帖子create
或new
:创建帖子get
:获取帖子update
或edit
:更新帖子delete
或rm
:删除帖子
命令输出
所有命令都会在标准输出上打印出供人类消费的结果。
此外,所有命令都支持 --json
标志,该标志会打印出 mataroa API 的 JSON 响应。请注意,这与常规输出不完全相同,因为后者在打印之前可能对结果进行了一些后处理。
所有命令也支持一个 --dry-run
标志,该标志会打印出一个 curl 命令,您可以通过执行该命令来达到与命令相同的结果。
日期格式
published_at
的值可以通过以下三种方式之一提供
- 格式为
YYYY-MM-DD
的日期 - 文本描述,例如
tomorrow
、next week
、next month
、today
、now
- 值
draft
或none
将日期设置为未来的日期会导致帖子在该日期安排发布。使用最后一个选项将发送空字符串 ""
作为值,这将导致帖子成为草稿。通常,published_at
字段是可选的,因此您可以完全省略它。
POST <> 文件映射
一些命令接受文件作为输入。get
也支持将结果写入文件。
该文件是一个表示帖子主体的 markdown 文件,并通过对前置内容进行额外处理。
前置内容是文件开头的 YAML 或 JSON 代码块。它可以包含 title
、slug
或 published_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 标题和带有 slug
和 published_at
字段以及实际帖子正文的 yml frontmatter。
update
文件是可选的,可用于更新帖子。必须通过 --slug
标志或 frontmatter 中的 slug
字段提供 slug
。也可以使用 --new-slug
标志或更改 frontmatter 中的 slug
字段的内容(在这种情况下,需要通过 --slug
标志提供用于找到要更新的帖子的 slug)来更改 slug
。
title
、published_at
和 body
字段都是可选的,并且都可以更改。
delete
和 list
这两个命令都不使用文件。
批处理命令
CLI 还支持 batch
命令,允许您一次性运行多个命令。命令从文件中读取,每行一个命令。忽略空行和以 #
、;
或 //
开头的行。命令将像直接传递给 CLI 一样解析。
示例
list
new post.md
edit --slug post---pub draft
rm post
许可证
mataroa-cli 在以下任一许可证下授权,由您选择
- Apache License, Version 2.0, (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT License (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
依赖关系
~25–36MB
~664K SLoC