private async Task <bool> ProcessDefinedDirectives(ICliContext context) { bool isInteractiveMode = context.IsInteractiveMode; IReadOnlyList <DirectiveInput> directives = context.Input.Directives; foreach (DirectiveInput directiveInput in directives) { // Try to get the directive matching the input or fallback to default DirectiveSchema directive = context.RootSchema.TryFindDirective(directiveInput.Name) ?? throw EndUserTypinExceptions.UnknownDirectiveName(directiveInput); if (!isInteractiveMode && directive.InteractiveModeOnly) { throw EndUserTypinExceptions.InteractiveModeDirectiveNotAvailable(directiveInput.Name); } // Get directive instance IDirective instance = (IDirective)_serviceProvider.GetRequiredService(directive.Type); await instance.HandleAsync(context.Console); if (!instance.ContinueExecution) { return(false); } } return(true); }