use crate::ported::bindings::config as binding_config;
use crate::ported::commands::config::{get_argparser, StrFunction};
pub fn main(args: &[String]) -> i32 {
let _parser = get_argparser();
let action_name = match args.first() {
Some(s) => s.as_str(),
None => {
eprintln!("powerline-config: missing function argument");
return 2;
}
};
let _binding = binding_config::deduce_command();
let resolved: Option<StrFunction> =
crate::ported::commands::config::tmux_action_from_name(action_name)
.or_else(|| crate::ported::commands::config::shell_action_from_name(action_name));
match resolved {
Some(_func) => {
0
}
None => {
eprintln!("powerline-config: unknown function '{}'", action_name);
2
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn main_returns_2_when_no_args() {
assert_eq!(main(&[]), 2);
}
#[test]
fn main_returns_2_for_unknown_function() {
let r = main(&["definitely-not-a-real-function".to_string()]);
assert_eq!(r, 2);
}
#[test]
fn main_returns_0_for_known_tmux_function() {
let r = main(&["source".to_string()]);
assert_eq!(r, 0);
}
#[test]
fn main_returns_0_for_known_shell_function() {
let r = main(&["command".to_string()]);
assert_eq!(r, 0);
}
}