1 个稳定版本
1.0.0 | 2022 年 8 月 21 日 |
---|
#35 在 #task-runner
18KB
299 行
💦 滴答
概述
drip-rs exec FILE_PATH [ARGS...]
drip-rs misc CMD [ARGS...]
drip-rs {-h|--help|help}
drip-rs {-V|--version}
安装
使用 cargo install
安装
$ cargo install drip-rs
从源码构建
$ git clone https://github.com/nullputra/drip-rs
$ cd drip
$ cargo build --release
显示版本信息
# cmd, pwsh, or bash
$ cargo install drip
$ drip-rs -V
drip-rs 1.0.0
示例
drip-rs-h
# Not only "cmd(drip)" but also "pwsh(.\drip)" and "bash(drip)" can be used in the same way.
$ drip-rs -h
drip-rs 1.0.0
Nullputra <stdnlptr@gmail.com>
USAGE:
drip.exe <SUBCOMMAND>
OPTIONS:
-h, --help Print help information
-V, --version Print version information
SUBCOMMANDS:
exec Execute scripts according to extension
help Print this message or the help of the given subcommand(s)
misc Running scripts independent of extension
drip-rs exec
# Not only "cmd(drip)" but also "pwsh(.\drip)" and "bash(drip)" can be used in the same way.
$ cat drip.toml
symbol = ">"
[exec]
cpp = [
"g++ -g -O2 -std=c++17 -W $FILE_PATH -o $FILE_PATH_WITHOUT_EXT",
"$FILE_PATH_WITHOUT_EXT",
]
py = { cmd = "py -3 $FILE_PATH", sh = "python3 $FILE_PATH" }
$ drip-rs exec tests\data\fft.py
scrs: "py -3 tests\data\fft.py"
args: []
> py -3 tests\data\fft.py
1 4 11 26 36 40 32
$ drip-rs exec tests\data\z-algorithm.cpp
scrs: ["g++ -g -O2 -std=c++17 -W tests\data\z-algorithm.cpp -o tests\data\z-algorithm", "tests\data\z-algorithm"]
args: []
> g++ -g -O2 -std=c++17 -W tests\data\z-algorithm.cpp -o tests\data\z-algorithm
> tests\data\z-algorithm
z-algorithm works
drip-rs misc
# Not only "cmd(drip)" but also "pwsh(.\drip)" and "bash(drip)" can be used in the same way.
$ cat drip.toml
symbol = ">"
[env_var]
COMMIT_MSG = "Fix src\\main.rs"
[misc]
echo = "echo $0"
# When the contents of "cmd" and "sh" match,
# they can be specified together by "common".
echo_confirm = { common = "echo $0", confirm = true }
# This is equivalent to the following:
# echo_confirm = { cmd = "echo $0", sh = "echo $0", confirm = true }
echo2 = ["echo $0", "echo $1"]
push = { common = [
"git add --all",
'git commit -m "$COMMIT_MSG"',
"git push origin master",
], confirm = true }
$ drip-rs misc echo arg0
scrs: "echo arg0"
args: ["arg0"]
> echo arg0
arg0
$ drip-rs misc echo_confirm arg0
scrs: "echo arg0"
args: ["arg0"]
Continue? y
> echo arg0
arg0
$ drip-rs misc echo2 arg0 arg1
scrs: ["echo arg0", "echo arg1"]
args: ["arg0", "arg1"]
> echo arg0
arg0
> echo arg1
arg1
$ drip-rs misc push
scrs: ["git add --all", "git commit -m "Fix src\\main.rs"", "git push origin master"]
args: []
Continue? n
Error: Aborted
调试
# cmd, pwsh or bash
$ git clone https://github.com/nullputra/drip-rs
$ cd drip-rs
$ cargo run -- exec tests\data\fft.py
scrs: "py -3 tests\data\fft.py"
args: []
> py -3 tests\data\fft.py
1 4 11 26 36 40 32
未来展望
- 我希望也能支持 Linux。
参考资料
- Rust 的命令行应用
- clap::_derive::_教程
- 使用 Result 恢复错误
- TOML
- Rust/Anyhow 的技巧
sharkdp/fd
Peltoche/lsd
BurntSushi/ripgrep
许可
许可协议为 CC0 1.0 (无需致谢)。
依赖
~4–12MB
~131K SLoC