sleeprite/rudis

无法正确读取命令行参数”--save“

DeadPoetSpoon opened this issue · 4 comments

save 格式为: <seconds> <changes>
db/db_config.rsget_save_or 函数仅获取两位
如下可解决该问题,但不是获取命令行参数的最佳方案,在persistence/rdb_scheduler.rsexecute 函数循环获取 save 参数对,现有的写法无法实现

fn get_save_or(default_save: Option<String>) -> Option<String> {
    let mut args = env::args().skip_while(|arg| arg != "--save").take(3); // 获取三位
    if args.next().is_none() {
        return default_save;
    }

    if let (Some(i), Some(c)) = (args.next(), args.next()) {
        Some(format!("{} {}", i, c)) // 拼接为正确格式
    } else {
        default_save
    }
}

建议将命令行参数的优先级提高在配置文件之前

已修复 c9a7068

感谢你的建议,启动参数的优先级,的确应该大于配置文件,我们将在后续的提交中调整

@sleeprite 如果愿意使用 clap 我可以帮助修改一下

@sleeprite 如果愿意使用 clap 我可以帮助修改一下

可以的,没问题

@DeadPoetSpoon 在 main.rs 中的测试程序我们是否可以独立出去,来保证代码结构的清晰

https://github.com/sleeprite/rudis/blob/master/src/main.rs