public CliActionHelp CreateHelp(IEnumerable <string> actionRouteParts)
        {
            var actionParts = actionRouteParts.ToList();

            var route = _actionRouter.FindRoute(actionParts.ToList());

            if (route == null)
            {
                throw new InvalidOperationException();
            }

            var actionAttribute = route
                                  .ActionMethod
                                  .GetCustomAttributes <CliActionAttribute>()
                                  .FirstOrDefault(x => !string.IsNullOrEmpty(x.Route));

            if (actionAttribute == null)
            {
                throw new InvalidOperationException();
            }

            var parameterInfo = route.ActionMethod.GetParameters().FirstOrDefault();

            var optionsHelp = parameterInfo != null
                ? _optionsHelpGenerator.CreateHelp(parameterInfo.ParameterType)
                : new OptionsHelp(Array.Empty <HelpEntry>(), Array.Empty <HelpEntry>());

            return(new CliActionHelp(optionsHelp)
            {
                HelpText = actionAttribute.HelpText ?? route.ActionMethod.Name,
                Syntax = GetSyntax(actionParts, optionsHelp)
            });
        }
Exemplo n.º 2
0
        public override async Task InvokeAsync(CliActionContext context)
        {
            var route = _router.FindRoute(context.Arguments);

            context.ActionRoute = route;

            await Next(context);
        }