re-implement hide of nuget api key in build logs, add more tests for it
[teamcity/dotNetPackagesSupport.git] / nuget-extensions / nuget-commands / src / NuGetTeamCityListCommand.cs
1 ´╗┐using System;\r
2 using System.Collections.Generic;\r
3 using System.Linq;\r
4 using NuGet;\r
5 \r
6 namespace JetBrains.TeamCity.NuGet.ExtendedCommands\r
7 {\r
8   [Command("TeamCity.List", "Lists packages for given Id with parsable output")]\r
9   public class NuGetTeamCityListCommand : ListCommandBase\r
10   {\r
11     [Option("NuGet package Source to search for package")]\r
12     public string Source { get; set; }\r
13 \r
14     [Option("Package Id to check for version update")]\r
15     public string Id { get; set; }\r
16 \r
17     [Option("NuGet Version Spec to constraint versions to be checked. Optional")]\r
18     public string Version { get; set; }\r
19 \r
20     protected override void ExecuteCommandImpl()\r
21     {\r
22       if (string.IsNullOrWhiteSpace(Source))\r
23         Source = NuGetConstants.DefaultFeedUrl;\r
24 \r
25       System.Console.Out.WriteLine("TeamCity NuGet List command.");\r
26       System.Console.Out.WriteLine("Source: {0}", Source ?? "<null>");\r
27       System.Console.Out.WriteLine("Package Id: {0}", Id ?? "<null>");\r
28       System.Console.Out.WriteLine("Version: {0}", Version ?? "<null>");      \r
29       System.Console.Out.WriteLine("Checking for latest version...");\r
30 \r
31       foreach (var p in GetPackages())\r
32         PrintPackageInfo(p);\r
33     }\r
34 \r
35     private IEnumerable<IPackage> GetPackages()\r
36     {\r
37       if (string.IsNullOrWhiteSpace(Source))\r
38         throw new CommandLineException("-Source must be specified.");\r
39 \r
40       var allPackages = GetAllPackages(Source, new[] { Id });\r
41       if (string.IsNullOrWhiteSpace(Version))\r
42         return allPackages;\r
43 \r
44       return allPackages.Where(VersionUtility.ParseVersionSpec(Version).ToDelegate());\r
45     }\r
46   }\r
47 }\r