mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
feat: support ms for --builder.interval (#10168)
This commit is contained in:
@ -14,7 +14,10 @@ pub use load_secret_key::get_secret_key;
|
||||
|
||||
/// Cli parsers functions.
|
||||
pub mod parsers;
|
||||
pub use parsers::{hash_or_num_value_parser, parse_duration_from_secs, parse_socket_address};
|
||||
pub use parsers::{
|
||||
hash_or_num_value_parser, parse_duration_from_secs, parse_duration_from_secs_or_ms,
|
||||
parse_socket_address,
|
||||
};
|
||||
|
||||
#[cfg(all(unix, any(target_env = "gnu", target_os = "macos")))]
|
||||
pub mod sigsegv_handler;
|
||||
|
||||
@ -12,6 +12,23 @@ pub fn parse_duration_from_secs(arg: &str) -> eyre::Result<Duration, std::num::P
|
||||
Ok(Duration::from_secs(seconds))
|
||||
}
|
||||
|
||||
/// Helper to parse a [Duration] from seconds if it's a number or milliseconds if the input contains
|
||||
/// a `ms` suffix:
|
||||
/// * `5ms` -> 5 milliseconds
|
||||
/// * `5` -> 5 seconds
|
||||
/// * `5s` -> 5 seconds
|
||||
pub fn parse_duration_from_secs_or_ms(
|
||||
arg: &str,
|
||||
) -> eyre::Result<Duration, std::num::ParseIntError> {
|
||||
if arg.ends_with("ms") {
|
||||
arg.trim_end_matches("ms").parse::<u64>().map(Duration::from_millis)
|
||||
} else if arg.ends_with('s') {
|
||||
arg.trim_end_matches('s').parse::<u64>().map(Duration::from_secs)
|
||||
} else {
|
||||
arg.parse::<u64>().map(Duration::from_secs)
|
||||
}
|
||||
}
|
||||
|
||||
/// Parse [`BlockHashOrNumber`]
|
||||
pub fn hash_or_num_value_parser(value: &str) -> eyre::Result<BlockHashOrNumber, eyre::Error> {
|
||||
match B256::from_str(value) {
|
||||
@ -93,4 +110,18 @@ mod tests {
|
||||
assert_eq!(socket_addr.port(), port);
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parse_ms_or_seconds() {
|
||||
let ms = parse_duration_from_secs_or_ms("5ms").unwrap();
|
||||
assert_eq!(ms, Duration::from_millis(5));
|
||||
|
||||
let seconds = parse_duration_from_secs_or_ms("5").unwrap();
|
||||
assert_eq!(seconds, Duration::from_secs(5));
|
||||
|
||||
let seconds = parse_duration_from_secs_or_ms("5s").unwrap();
|
||||
assert_eq!(seconds, Duration::from_secs(5));
|
||||
|
||||
assert!(parse_duration_from_secs_or_ms("5ns").is_err());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user