5 个版本 (3 个重大变更)

0.6.0 2021年9月26日
0.5.1 2021年9月26日
0.5.0 2020年2月21日
0.4.0 2019年5月6日
0.1.0 2019年2月13日

#310 in 构建工具

AGPL-3.0-or-later

30KB
663

Rhiz

一个刻意简化的任务运行器。

这是一个处于开发中的预alpha项目。

Rhiz 执行在 "Rhizfile" 中定义的任务,其中包含类似于 Lisp 的语法的任务描述。

(task "hello"
  (log "Rhiz says hello"))

;; Comments start with a semicolon
(task "fizzbuzz"
  "Tasks can have an optional description"  ;; Strings with spaces are double-quoted.
  (exec fizzbuzz.exe)
  (log "The fizz was buzzed"))

(task "clean"
  (delete "./output"))

("task" echo
  ("echo" "Bare words and quoted strings are equivalent")))

任务执行

任务是在包含 Rhizfile 的目录中执行的(不是 rhiz 被调用的目录)。当 rhiz 被调用时。

任务中的命令一个接一个地执行,如果一个命令返回非零退出代码,则 Rhiz 立即退出。

命令

log

将消息打印到标准输出。接受一个参数,该参数应该是一个字符串。

exec

在 Rhizfile 的目录(通常是项目根目录)中执行外部命令(cargonpm 等)。

接受一个或多个参数。这些参数被转换为字符串;第一个应该是外部程序的名字;其余的是它的参数。它们使用 std::process:Command (实际上:Command::new(first_arg).args(rest_of_args))执行。

.
empty-dir

确保目录存在且为空。接受一个参数,该参数应该是目录的路径(相对于 Rhizfile)。

如果目录存在,其内容将被删除。如果不存在,则创建它。

delete

删除文件。它接受一个参数,该参数应该是一个文件名或路径(相对于 Rhizfile)。

如果指定的路径文件存在,则使用 fs::remove_file 进行删除。如果文件不存在,则此命令将被忽略。

复制

复制文件。需要两个参数:复制的源路径和目标路径。

源应该是文件的路径(相对于 Rhizfile)。目标可以是目录的路径(在这种情况下,源文件以相同名称复制到该目录),也可以是新文件的路径(在这种情况下,它以新名称复制)。如果目标文件已存在,此命令将出错退出。

复制操作使用 fs::copy 进行。

递归复制

递归复制目录。需要两个参数:复制的源路径和目标路径。

源和目标目录都应该存在。源中的文件和目录被复制到目标中。

并行执行

并行执行命令。接受任意数量的任务(以 s-expressions 的形式编写)作为参数。

依赖项

~4.5MB
~86K SLoC