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) }); }
public override async Task InvokeAsync(CliActionContext context) { var route = _router.FindRoute(context.Arguments); context.ActionRoute = route; await Next(context); }