FinderPackageCommand.cs (3650B)
1 // ----------------------------------------------------------------------------- 2 // <copyright file="FinderPackageCommand.cs" company="Microsoft Corporation"> 3 // Copyright (c) Microsoft Corporation. Licensed under the MIT License. 4 // </copyright> 5 // ----------------------------------------------------------------------------- 6 7 namespace Microsoft.WinGet.Client.Engine.Commands 8 { 9 using System.Management.Automation; 10 using Microsoft.Management.Deployment; 11 using Microsoft.WinGet.Client.Engine.Commands.Common; 12 using Microsoft.WinGet.Client.Engine.Helpers; 13 using Microsoft.WinGet.Client.Engine.PSObjects; 14 using Microsoft.WinGet.Common.Command; 15 16 /// <summary> 17 /// Searches configured sources for packages. 18 /// </summary> 19 public sealed class FinderPackageCommand : FinderExtendedCommand 20 { 21 /// <summary> 22 /// Initializes a new instance of the <see cref="FinderPackageCommand"/> class. 23 /// </summary> 24 /// <param name="psCmdlet">Caller cmdlet.</param> 25 /// <param name="id">Package identifier.</param> 26 /// <param name="name">Name of package.</param> 27 /// <param name="moniker">Moniker of package.</param> 28 /// <param name="source">Source to search. If null, all are searched.</param> 29 /// <param name="query">Match against any field of a package.</param> 30 /// <param name="tag">Tag of the package.</param> 31 /// <param name="command">Command of the package.</param> 32 /// <param name="count">Max results to return.</param> 33 public FinderPackageCommand( 34 PSCmdlet psCmdlet, 35 string id, 36 string name, 37 string moniker, 38 string source, 39 string[] query, 40 string tag, 41 string command, 42 uint count) 43 : base(psCmdlet) 44 { 45 // FinderCommand 46 this.Id = id; 47 this.Name = name; 48 this.Moniker = moniker; 49 this.Source = source; 50 this.Query = query; 51 52 // FinderExtendedCommand 53 this.Tag = tag; 54 this.Command = command; 55 this.Count = count; 56 } 57 58 /// <summary> 59 /// Process find package command. 60 /// </summary> 61 /// <param name="psPackageFieldMatchOption">PSPackageFieldMatchOption.</param> 62 public void Find(string psPackageFieldMatchOption) 63 { 64 var results = this.Execute( 65 () => this.FindPackages( 66 CompositeSearchBehavior.RemotePackagesFromRemoteCatalogs, 67 PSEnumHelpers.ToPackageFieldMatchOption(psPackageFieldMatchOption))); 68 69 for (var i = 0; i < results.Count; i++) 70 { 71 this.Write(StreamType.Object, new PSFoundCatalogPackage(results[i].CatalogPackage)); 72 } 73 } 74 75 /// <summary> 76 /// Process get package command. 77 /// </summary> 78 /// <param name="psPackageFieldMatchOption">PSPackageFieldMatchOption.</param> 79 public void Get(string psPackageFieldMatchOption) 80 { 81 var results = this.Execute( 82 () => this.FindPackages( 83 CompositeSearchBehavior.LocalCatalogs, 84 PSEnumHelpers.ToPackageFieldMatchOption(psPackageFieldMatchOption))); 85 for (var i = 0; i < results.Count; i++) 86 { 87 this.Write(StreamType.Object, new PSInstalledCatalogPackage(results[i].CatalogPackage)); 88 } 89 } 90 } 91 }