winget-cli

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

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 }