VersionCommand.cs 3.0 KB

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