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 构建工具
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 的目录(通常是项目根目录)中执行外部命令(
cargo
、npm
等)。接受一个或多个参数。这些参数被转换为字符串;第一个应该是外部程序的名字;其余的是它的参数。它们使用
.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