Classes/Providers/YumParcelProvider.ps1
class YumParcelProvider : ParcelProvider { YumParcelProvider() : base('Yum', $false, [string]::Empty) {} [bool] TestProviderInstalled([hashtable]$_context) { # fail if yum isn't available if ($null -eq (Get-Command -Name 'yum' -ErrorAction Ignore)) { throw 'The provider yum is not installed' } return $true } [string] GetPackageInstallScript([ParcelPackage]$_package, [hashtable]$_context) { return "sudo yum install -y -q $($_package.Name)-$($this.GetVersionArgument($_package)) 2>&1" } [string] GetPackageUninstallScript([ParcelPackage]$_package, [hashtable]$_context) { return "sudo yum remove -y $($_package.Name) 2>&1" } [bool] TestPackageInstalled([ParcelPackage]$_package) { $result = Invoke-Expression -Command "yum list installed 2>&1" return ($null -ne ($result | Select-String -Pattern "^$($_package.Name)\.[\w_\d]+\s+$($this.GetVersionArgument($_package))")) } [bool] TestPackageUninstalled([ParcelPackage]$_package) { $result = Invoke-Expression -Command "yum list installed 2>&1" return ($null -eq ($result | Select-String -Pattern "^$($_package.Name)\.[\w_\d]+\s+")) } [string] GetPackageLatestVersion([ParcelPackage]$_package) { $result = Invoke-Expression -Command "yum info $($_package.Name) 2>&1" if (!$?) { throw "The $($_package.Name) package was not found on yum" } return (($result | Select-String -Pattern 'version\s+\:\s+.+?')[0] -split '\:')[-1].Trim() } [string] GetVersionArgument([ParcelPackage]$_package) { return $_package.Version } } |