use super::search::SearchArgs;
pub(super) fn reject_sym_refs_conflicts(args: &SearchArgs) -> Option<i32> {
if args.sym.is_some() && args.refs.is_some() {
eprintln!("st: --sym and --refs are mutually exclusive");
return Some(2);
}
if args.sym_kind.is_some() && args.sym.is_none() && args.refs.is_none() {
eprintln!("st: --sym-kind requires --sym or --refs");
return Some(2);
}
None
}
pub(super) fn reject_incompatible_symbol_flags(args: &SearchArgs) -> Option<i32> {
let context = args.before_context > 0 || args.after_context > 0;
let checks: [(bool, &str); 9] = [
(args.count, "--count"),
(args.count_matches, "--count-matches"),
(args.only_matching, "-o/--only-matching"),
(args.json, "--json"),
(args.vimgrep, "--vimgrep"),
(args.replace.is_some(), "-r/--replace"),
(args.column, "--column"),
(context, "context flags (-A, -B, -C)"),
(args.invert_match, "-v/--invert-match"),
];
for (is_set, flag) in checks {
if is_set {
eprintln!("st: {flag} is not supported for symbol queries");
return Some(2);
}
}
None
}