Exemple #1
0
 protected BaseMacroExecute(IDataEngine dataengine, IMacroFactory macroFactory, IOutputEngine outputengine, IProject project)
 {
     Engine         = dataengine;
     MacroFactory   = macroFactory;
     OutputEngine   = outputengine;
     CurrentProject = project;
 }
Exemple #2
0
 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;
 }
Exemple #3
0
        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)
 {
 }
Exemple #5
0
 public MacroFactory(IProject project, IOutputEngine outputEngine)
 {
     Project      = project;
     OutputEngine = outputEngine;
 }
Exemple #6
0
 protected BaseMacroExecuteInterface(IDataEngine dataengine, IMacroFactory macroFactory, IOutputEngine outputengine, IProject project, IConfiguration configuration) : base(dataengine, macroFactory, outputengine, project, configuration)
 {
 }
Exemple #7
0
 public static void WriteError(this IOutputEngine outputEngine, Exception ex)
 {
     outputEngine.WriteError(ex.Message);
 }
Exemple #8
0
        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);
        }