5 个版本 (破坏性更新)
0.5.0 | 2023年3月15日 |
---|---|
0.4.0 | 2023年3月13日 |
0.3.0 | 2022年11月13日 |
0.2.0 | 2022年9月29日 |
0.1.0 | 2022年9月24日 |
#1582 在 命令行工具
每月下载量 33
24KB
355 行
Runme
基于 shell 脚本的任务运行器。
安装
使用 cargo
cargo install --force runme
适用于 macOS、Linux、Windows 的二进制文件
从 Github Releases 下载,解压缩并将 runme 添加到您的 $PATH。
GitHub Actions
extractions/setup-crate 可以用于在 GitHub Actions 工作流程中安装。
- uses: extractions/setup-crate@v1
with:
owner: sigoden
name: runme
入门
首先,运行 runme --runme-create build test
以快速创建样板 Runmefile.sh
#!/usr/bin/env bash
# @cmd build project
# @alias b
build() {
echo Run build
}
# @cmd test project
test() {
echo Run test
}
eval "$(runme --runme-eval "$0" "$@")"
要定义一个新任务,只需创建 bash 函数并在其上方添加
@cmd
。 任务就是函数
$ runme -h
USAGE: Runmefile.sh <COMMAND>
COMMANDS:
build build project [aliases: b]
test test project
$ runme test
Run test
$ runme b
Run build
Runme 使用
argc
来解析 Runmefile。
特性
跨平台
runme
二进制文件适用于 Linux、macOS 和 Windows。
runme
依赖于已内置到 Linux/macOS 中的 bash。在 Windows 上,runme 自动定位并使用默认随 git 一起安装的 bash。
bash 提供了 GNU 工具,如 ls
、rm
、grep
、sed
、awk
等,因此您可以在 Runmefile 中自由自信地使用它们。
任务参数
使用 注释标签 来定义任务参数。
# @cmd Download a file
# @alias d
# @flag -f --force Override existing file
# @option -t --tries <NUM> Set number of retries to NUM
# @arg source! Url to download from
# @arg target Save file to
download() {
echo "cmd: download"
echo "flag: --force $argc_force"
echo "option: --tries $argc_tries"
echo "arg: source $argc_source"
echo "arg: target $argc_target"
}
$ runme download -h
Download a file
USAGE: Runmefile.sh download [OPTIONS] <SOURCE> [TARGET]
ARGS:
<SOURCE> Url to download from
[TARGET] Save file to
OPTIONS:
-f, --force Override existing file
-t, --tries <NUM> Set number of retries to NUM
-h, --help Print help information
$ runme download -f --tries 3 from.txt to.txt
cmd: download
flag: --force 1
option: --tries 3
arg: source from.txt
arg: target to.txt
您还可以使用 shell 变量来访问任务参数。
# @cmd
run() {
echo $2 $1 $#
}
$ runme run foo bar
bar foo 2
任务别名
# @cmd
# @alias t,tst
test() {
echo "Test..."
}
$ runme t
Test...
任务依赖关系
依赖关系通过函数调用建立。
# @cmd
bar() { foo;
echo bar
baz; }
# @cmd
foo() {
echo foo
}
# @cmd
baz() {
echo baz
}
$ runme bar
foo
bar
baz
任务分组
可以使用 _
、-
、@
、.
、:
等符号将任务语义分组。
# @cmd
test@unit() {}
# @cmd
test@bin() {}
# @cmd
app.build() {}
# @cmd
app.test() {}
默认任务
当不指定任务名称调用 runme
时,它会运行 main
函数。如果 main
函数不存在,runme 将打印帮助信息。
main() {
foo
}
# @cmd
foo() {
echo foo
}
$ runme
foo
高级主题
自动补全
提供了适用于 bash/zsh/fish/powershell 的 Shell 自动补全脚本。
自定义 shell 路径
您可以使用环境变量 RUNME_SHELL
来自定义 shell 路径。
RUNME_SHELL="C:\\Program Files\\Git\\bin\\bash.exe"
自定义脚本名称
默认情况下,runme 搜索以下脚本文件:
- Runmefile.sh 或 Runmefile
- runmefile.sh 或 runmefile
- RUNMEFILE.sh 或 RUNMEFILE
您可以使用环境变量 RUNME_SCRIPT
来自定义脚本名称。
RUNME_SCRIPT=taskfile.sh
许可证
版权所有 (c) 2022 runme-developers。
runme 可在 MIT 许可证或 Apache 许可证 2.0 的条款下提供,由您选择。
有关许可证详细信息,请参阅 LICENSE-APACHE 和 LICENSE-MIT 文件。
依赖项
~7–16MB
~210K SLoC