Sync a declarative package list with the pacman package manager
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

2.3 KiB

ADDED Requirements

Requirement: ValidatePackages uses dyalpm library with batch AUR fallback

The ValidatePackages method SHALL accept a slice of package names, query them in batch using dyalpm, then batch query AUR for any not found in pacman databases.

Scenario: All packages found in local database

  • WHEN ValidatePackages is called with packages that all exist in local pacman database
  • THEN returns a slice of PackageInfo with Exists=true, InAUR=false for each

Scenario: Some packages found in sync database

  • WHEN ValidatePackages is called with packages where some are only in sync databases
  • THEN returns PackageInfo with Exists=true, InAUR=false for found packages

Scenario: Some packages found in AUR

  • WHEN ValidatePackages is called and some packages are not in pacman databases
  • THEN those packages are batched to single AUR HTTP request, returns PackageInfo with InAUR=true

Scenario: Packages not found anywhere

  • WHEN ValidatePackages is called and some packages not found in pacman or AUR
  • THEN returns PackageInfo with Exists=false, InAUR=false for those packages

Requirement: Unified package cache

The Pac struct SHALL maintain a single cache map that stores all package query results (both pacman and AUR), replacing the separate aurCache.

Scenario: Package already cached

  • WHEN ValidatePackages is called for a package already queried in current job
  • THEN cached result returned without any dyalpm or AUR calls

Scenario: New Pac instance

  • WHEN New() creates a new Pac instance
  • THEN cache is empty (fresh job)

Requirement: Single batch AUR call

The AUR HTTP API SHALL be called once with all package names not found in pacman databases.

Scenario: Multiple packages not in pacman

  • WHEN 3 packages not found in local or sync databases
  • THEN single AUR HTTP request with all 3 in arg[] params
  • AND results cached for all 3

Requirement: Fallback to process spawn if dyalpm unavailable

If dyalpm library is not available at runtime, ValidatePackages SHALL fall back to spawning pacman -Qip/-Sip processes in batch.

Scenario: dyalpm unavailable

  • WHEN dyalpm initialization fails
  • THEN uses pacman -Qip for local, -Sip for sync, AUR HTTP batch as fallback
  • AND behavior is identical to using dyalpm