Skip to main content

parse_pacman_si_conflicts

Function parse_pacman_si_conflicts 

Source
pub fn parse_pacman_si_conflicts(text: &str) -> Vec<String>
Expand description

What: Extract conflict specifications from pacman -Si “Conflicts With” field.

Inputs:

  • text: Raw stdout from pacman -Si for a package.

Output:

  • Returns vector of package names that conflict (without version constraints).

Details:

  • Scans for lines starting with “Conflicts With”
  • Handles multi-line conflicts (continuation lines are indented)
  • Splits conflicts on whitespace
  • Removes version constraints from package names
  • Filters out .so virtual packages and invalid tokens
  • Deduplicates conflicts (returns unique list)
  • Returns empty vector if no conflicts or “None”

§Examples

use arch_toolkit::deps::parse_pacman_si_conflicts;

let output = "Name            : vim\nConflicts With : gvim vi\n";
let conflicts = parse_pacman_si_conflicts(output);
assert_eq!(conflicts, vec!["gvim", "vi"]);

let output = "Name            : base\nConflicts With : None\n";
let conflicts = parse_pacman_si_conflicts(output);
assert!(conflicts.is_empty());