diff --git a/src/AnyPackage.Pkgx.psm1 b/src/AnyPackage.Pkgx.psm1 index 7a78ef1..b43adfd 100644 --- a/src/AnyPackage.Pkgx.psm1 +++ b/src/AnyPackage.Pkgx.psm1 @@ -6,7 +6,22 @@ using module AnyPackage using namespace AnyPackage.Provider [PackageProvider('pkgx')] -class PkgxProvider : PackageProvider, IInstallPackage, IUninstallPackage { +class PkgxProvider : PackageProvider, IFindPackage, IInstallPackage, IUninstallPackage { + [void] FindPackage([PackageRequest] $request) { + if ($request.Name -eq '*') { + $request.WriteVerbose('pkgx does not support wildcards.') + return + } + + pkgx mash pkgx/pantry-inventory $request.Name | + ForEach-Object { + if ($request.IsMatch([PackageVersion]$_)) { + $package = [PackageInfo]::new($request.Name, $_, $request.ProviderInfo) + $request.WritePackage($package) + } + } + } + [void] InstallPackage([PackageRequest] $request) { if ($request.Version -and $request.Version.MinVersion -ne $request.Version.MaxVersion) { throw 'pkgx does not support version ranges, use only exact versions.' diff --git a/tests/Find-Package.Tests.ps1 b/tests/Find-Package.Tests.ps1 new file mode 100644 index 0000000..66227ba --- /dev/null +++ b/tests/Find-Package.Tests.ps1 @@ -0,0 +1,10 @@ +#Requires -Modules AnyPackage.Pkgx + +Describe Find-Package { + Context 'with -Name parameter' { + It 'should find' { + { Find-Package -Name bun } | + Should -Not -BeNullOrEmpty + } + } +} diff --git a/tests/Install-Package.Tests.ps1 b/tests/Install-Package.Tests.ps1 index 02112d5..36c8e62 100644 --- a/tests/Install-Package.Tests.ps1 +++ b/tests/Install-Package.Tests.ps1 @@ -11,4 +11,4 @@ Describe Install-Package { Should -Not -Throw } } -} \ No newline at end of file +}