10 个不稳定版本 (4 个破坏性更改)
0.5.0 | 2024年4月8日 |
---|---|
0.4.0 | 2023年11月14日 |
0.3.1 | 2023年5月2日 |
0.2.2 | 2021年11月1日 |
0.0.1 | 2021年5月31日 |
#367 在 配置
86 每月下载量
18KB
377 行
wd_run:一个项目操作管理工具
wd_run 支持命令行解析和配置文件解析。它主要通过注册回调的方式实现。
以下配置文件解析格式受支持
- json
- yaml
- toml
- http (编码)
入门
[dependencies]
wd_run = "0.2"
示例
use std::future::Future;
use std::pin::Pin;
use wd_run::*;
#[tokio::main]
async fn main() {
ArgsManager::new()
.add_global_flag("name", "wd_run_test", "server name")
.register_init(init_one)
.register_init(init_two)
.register_cmd(
CmdInfo::new("run", "run appliation").add("cycle", 5, "cycle index"),
cmd_run,
)
.register_cmd(
CmdInfo::new("show", "show init value").add("desc", "show info", "none"),
cmd_show,
)
.register_exit(exit)
.run()
.await;
}
pub fn init_one(ctx: Context) -> Pin<Box<dyn Future<Output = Context> + Send>> {
Box::pin(async move {
//load config
// let result:Config = load_config("./config.yaml").unwrap();
ctx.set("init_one", "success".to_string()).await;
return ctx;
})
}
pub fn init_two(ctx: Context) -> Pin<Box<dyn Future<Output = Context> + Send>> {
Box::pin(async move {
ctx.set("init_two", "success".to_string()).await;
return ctx;
})
}
pub fn cmd_run(ctx: Context) -> Pin<Box<dyn Future<Output = Context> + Send>> {
Box::pin(async move {
let cycle = parse_args::<_, u32>(&ctx, "cycle").await.unwrap();
for i in 0..cycle {
tokio::time::sleep(tokio::time::Duration::from_secs(1)).await;
println!("--->{}", i);
}
return ctx;
})
}
pub fn cmd_show(ctx: Context) -> Pin<Box<dyn Future<Output = Context> + Send>> {
Box::pin(async move {
let name = ctx.copy::<_, String>("name").await.unwrap();
let desc = ctx.copy::<_, String>("desc").await.unwrap();
println!("----------> {}:{} <---------------", name, desc);
let one = ctx.copy::<_, String>("init_one").await.unwrap();
let two = ctx.copy::<_, String>("init_two").await.unwrap();
println!("init one:{} two:{}", one, two);
return ctx;
})
}
pub fn exit(ctx: Context) -> Pin<Box<dyn Future<Output = Context> + Send>> {
Box::pin(async move {
println!("game over");
return ctx;
})
}
运行以下命令:
cargo run -- run --cycle 3
cargo run -- show --name wd_run
许可证
许可协议为以下之一
- Apache 许可协议第 2 版 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可协议 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确声明,否则根据 Apache-2.0 许可协议定义的任何有意提交以包含在作品中的贡献,都将按照上述方式双许可,不附加任何额外条款或条件。
依赖关系
~7–17MB
~198K SLoC