feat(users/Profpatsch/execline/exec_helpers): add args()
Some programs need an exact amount of arguments, and we want to fail if they get too many or not enough. Change-Id: Ic703949f38780718f26118b896e7c7d7aa5553d9 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2504 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
This commit is contained in:
parent
060600f0d7
commit
81122c1297
2 changed files with 11 additions and 1 deletions
|
@ -11,6 +11,16 @@ pub fn no_args(current_prog_name: &str) -> () {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn args(current_prog_name: &str, no_of_positional_args: usize) -> Vec<Vec<u8>> {
|
||||
let mut args = std::env::args_os();
|
||||
// remove argv[0]
|
||||
let _ = args.nth(0);
|
||||
if args.len() != no_of_positional_args {
|
||||
die_user_error(current_prog_name, format!("Expected {} arguments, got {}, namely {:?}", no_of_positional_args, args.len(), args.collect::<Vec<_>>()))
|
||||
}
|
||||
args.map(|arg| arg.into_vec()).collect()
|
||||
}
|
||||
|
||||
pub fn args_for_exec(current_prog_name: &str, no_of_positional_args: usize) -> (Vec<Vec<u8>>, Vec<Vec<u8>>) {
|
||||
let mut args = std::env::args_os();
|
||||
// remove argv[0]
|
||||
|
|
|
@ -109,7 +109,7 @@ let
|
|||
|
||||
fn main() {
|
||||
let mut buf = vec![];
|
||||
let (args, prog) = exec_helpers::args_for_exec("record-get", 1);
|
||||
let args = exec_helpers::args("record-get", 1);
|
||||
let field = match std::str::from_utf8(&args[0]) {
|
||||
Ok(f) => f,
|
||||
Err(_e) => exec_helpers::die_user_error("record-get", format!("The field name needs to be valid unicode"))
|
||||
|
|
Loading…
Reference in a new issue