protected BaseMacroExecute(IDataEngine dataengine, IMacroFactory macroFactory, IOutputEngine outputengine, IProject project) { Engine = dataengine; MacroFactory = macroFactory; OutputEngine = outputengine; CurrentProject = project; }
public Host(IServiceProvider services, IServiceCollection pool, IAppBuilder appBuilder, IEnvironment hostEnv, IOutputEngine output, IHostInput hostInput, IHistoryProvider historyProvider) { this.services = services; this.pool = pool; this.appBuilder = appBuilder; this.hostEnv = hostEnv; this.output = output; this.hostInput = hostInput as HostInput; this.historyProvider = historyProvider; }
public AppDelegate Build() { AppDelegate app = context => { IOutputEngine outputEngine = Services.GetService <IOutputEngine>(); IInput inputCommand = context.Command; string error = $"command not found: {inputCommand.Name}"; outputEngine.WriteError(error); return(Task.CompletedTask); }; foreach (Func <AppDelegate, AppDelegate> component in components) { app = component(app); } return(app); }
public AutoImplement(IDataEngine dataengine, IMacroFactory macroFactory, IOutputEngine outputengine, IProject project, IConfiguration configuration) : base(dataengine, macroFactory, outputengine, project, configuration) { }
public MacroFactory(IProject project, IOutputEngine outputEngine) { Project = project; OutputEngine = outputEngine; }
protected BaseMacroExecuteInterface(IDataEngine dataengine, IMacroFactory macroFactory, IOutputEngine outputengine, IProject project, IConfiguration configuration) : base(dataengine, macroFactory, outputengine, project, configuration) { }
public static void WriteError(this IOutputEngine outputEngine, Exception ex) { outputEngine.WriteError(ex.Message); }
public Task Invoke(IHostContext context, Func <Task> next, IServiceProvider services, ICommandProvider commandProvider, IEnvironment env, IOutputEngine outputEngine, IHostInput hostInput) { IInput input = context.Command; if (input.Name == "help") { return(ProcessWithHelp(input, context, commandProvider)); } CommandRecord command = commandProvider.MatchCommand(context); if (command == null) { return(next()); } MethodInfo methodInfo = command.CommandEntry; ParameterInfo[] parameters = methodInfo.GetParameters(); List <int> pathIndices = new List <int>(); foreach (var parameter in parameters) { if (parameter.GetCustomAttribute <PathAttribute>() != null) { pathIndices.Add(parameter.Position); } } try { CommandSet instance = (CommandSet)ObjectFactory.CreateInstance(command.InstanceType, services, input.Options, input.Arguments); instance.Command = input; instance.Context = context; instance.InputObject = context.InputObject; instance.OutputEngine = outputEngine; instance.HostInput = hostInput; instance.Environment = env; object value; if (pathIndices.Count <= 0) { value = ObjectFactory.InvokeMethod(instance, methodInfo, services, input.Options, input.Arguments); } else { MethodInvokeContext invokeContext = ObjectFactory.CreateInvokeContext(methodInfo, services, input.Options, input.Arguments); string currentPath = env.WorkingDirectory.FullName; ProcessPathAttribute(pathIndices, parameters, invokeContext.Arguments, currentPath); value = invokeContext.Invoke(instance); } if (command.CommandEntry.ReturnType != typeof(void)) { context.SetResult(value); } } catch (Exception ex) { context.Exception = ex; } return(Task.CompletedTask); }