VersionCommand.cs 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.IO;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Text.Json;
  8. using BO.AppServer.Metadata.Dto;
  9. using BO.Connector.Console;
  10. using BO.Console.Commands.Base;
  11. using BO.Console.Options;
  12. using Quadarax.Foundation.Core.QConsole;
  13. using Quadarax.Foundation.Core.QConsole.Argument;
  14. using Quadarax.Foundation.Core.QConsole.Attributes;
  15. using Quadarax.Foundation.Core.Value;
  16. namespace BO.Console.Commands.Service
  17. {
  18. [CommandDefinition]
  19. internal class VersionCommand : AbstractListCommand
  20. {
  21. #region *** Constants ***
  22. private const string CS_CMD_VERSIONGET_NAME = "version";
  23. private const string CS_CMD_VERSIONGET_DESCR = "Get version information from server or from console.";
  24. private const string CS_ARG_NAME_LOCAL = "local";
  25. private const string CS_ARG_HINT_LOCAL = "<show_local>";
  26. private const string CS_ARG_DESC_LOCAL = "Flag if set shows only local console assembly manifest.";
  27. #endregion
  28. #region *** Properties ***
  29. public override string Name => CS_CMD_VERSIONGET_NAME;
  30. public override string Description => CS_CMD_VERSIONGET_DESCR;
  31. #endregion
  32. #region *** Constructor ***
  33. public VersionCommand(Engine engine) : base(engine)
  34. {
  35. }
  36. #endregion
  37. #region *** EXECUTE ***
  38. protected override Result OnExecute()
  39. {
  40. IEnumerable<AssemblyInfoDto> versions;
  41. if (!WasArgumentSpecified(CS_ARG_NAME_LOCAL))
  42. {
  43. versions = Client.GetVersionsAsync().Result.OrderBy(x=>x.Name);
  44. WriteDtoToConsole(versions, "Name", "AssemblyVersion","FileVersion");
  45. }
  46. else
  47. {
  48. var assemblies = AppDomain.CurrentDomain.GetAssemblies();
  49. versions = new List<AssemblyInfoDto>();
  50. foreach (var assembly in assemblies)
  51. {
  52. var fiv = FileVersionInfo.GetVersionInfo(assembly.Location);
  53. ((List<AssemblyInfoDto>)versions).Add(new AssemblyInfoDto()
  54. {
  55. FileVersion = fiv.FileVersion,
  56. AssemblyVersion = assembly.GetName().Version?.ToString(),
  57. Name = assembly.GetName().Name
  58. });
  59. }
  60. versions = versions.OrderBy(x => x.Name).ToList();
  61. }
  62. WriteDtoToConsole(versions, "Name", "AssemblyVersion","FileVersion");
  63. return new Result();
  64. }
  65. #endregion
  66. #region *** Private operations ***
  67. protected override void OnInitialize()
  68. {
  69. if (!WasArgumentSpecified(CS_ARG_NAME_LOCAL))
  70. base.OnInitialize();
  71. }
  72. protected override IEnumerable<AbstractArgument> OnSetupArguments()
  73. {
  74. var args = base.OnSetupArguments().ToList();
  75. args.Add(new FlagArgument(CS_ARG_NAME_LOCAL, CS_ARG_DESC_LOCAL, CS_ARG_HINT_LOCAL,false));
  76. return args;
  77. }
  78. #endregion
  79. }
  80. }