Program.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using System;
  2. using Microsoft.Extensions.CommandLineUtils;
  3. using UniverseTools;
  4. namespace PinVersions
  5. {
  6. class Program
  7. {
  8. static int Main(string[] args)
  9. {
  10. var app = new CommandLineApplication();
  11. var pinSourceOption = app.Option("-s|--source",
  12. "Feed containing packages to pin.",
  13. CommandOptionType.MultipleValue);
  14. var packageSpecsDirectoryOption = app.Option("--graph-specs-root",
  15. "Directory containing package specs. (Optional)",
  16. CommandOptionType.SingleValue);
  17. var repositoryArgument = app.Argument("Repository", "Repository directory");
  18. app.OnExecute(() =>
  19. {
  20. if (!pinSourceOption.HasValue())
  21. {
  22. Console.Error.WriteLine($"Option {pinSourceOption.Template} must have a value.");
  23. return 1;
  24. }
  25. if (string.IsNullOrEmpty(repositoryArgument.Value))
  26. {
  27. Console.Error.WriteLine($"Repository argument must be specified.");
  28. return 1;
  29. }
  30. var graphSpecProvider = packageSpecsDirectoryOption.HasValue() ?
  31. new DependencyGraphSpecProvider(packageSpecsDirectoryOption.Value().Trim()) :
  32. DependencyGraphSpecProvider.Default;
  33. using (graphSpecProvider)
  34. {
  35. var pinVersionUtility = new PinVersionUtility(repositoryArgument.Value.Trim(), pinSourceOption.Values, graphSpecProvider);
  36. pinVersionUtility.Execute();
  37. }
  38. return 0;
  39. });
  40. return app.Execute(args);
  41. }
  42. }
  43. }