using qdr.app.tss.client.console; using Quadarax.Foundation.Core.QConsole; using Quadarax.Foundation.Core.QConsole.Argument; using Quadarax.Foundation.Core.QConsole.Command.Base; using System.IO.Abstractions; namespace qdr.app.qbstack.Commands { abstract class BaseCmd : AbstractCommand { #region *** Constants *** private const string ARG_URL_NAME = "url"; private const string ARG_URL_HINT = "url"; private const string ARG_URL_DESCR = "The WordPress site URL where TSS plugin installed (e.g. https://example.com)."; private const string ARG_APIKEY_NAME = "apiKey"; private const string ARG_APIKEY_HINT = "api_key"; private const string ARG_APIKEY_DESCR = "API key for authentication (can be obtain from TSS plugin setting)."; #endregion #region *** Private fields *** #endregion #region *** Properties *** protected IFileSystem FileSystem => GetContext().FileSystem; protected Uri Url {get; private set;} = new Uri("https://example.com/"); protected string ApiKey {get; private set;} = string.Empty; #endregion #region *** Constructors *** protected BaseCmd(Engine engine) : base(engine) { } #endregion #region *** Operations *** #endregion #region *** Overrides *** protected override IEnumerable OnSetupArguments() { var list = base.OnSetupArguments().ToList(); list.Add(new NamedArgument(ARG_URL_NAME, ARG_URL_DESCR, ARG_URL_HINT, Quadarax.Foundation.Core.QConsole.Value.TypeValuesEnum.String, string.Empty, true)); list.Add(new NamedArgument(ARG_APIKEY_NAME, ARG_APIKEY_DESCR, ARG_APIKEY_HINT, Quadarax.Foundation.Core.QConsole.Value.TypeValuesEnum.String, string.Empty,true)); return list; } protected override void OnValidateArguments() { base.OnValidateArguments(); var url = GetArgumentValueOrDefault(ARG_URL_NAME); if (!Uri.TryCreate(url, UriKind.Absolute, out var uri)) throw new ArgumentException($"URL '{url}' not valid.", ARG_URL_NAME); Url = uri; ApiKey = GetArgumentValueOrDefault(ARG_APIKEY_NAME)!; } #endregion } }