public virtual async Task <PipelineResult <Wrapper <bool> > > Execute(IWorkItem?workItem, IOperation from, Func <VariableCollection, ResolveContext, Task> resolveCallback, OperationWatcher watcher, ILogger logger) { LogScope.Invoked(); return(OnExecute != null ? await OnExecute(workItem, from, resolveCallback, watcher, logger) : new PipelineResult <Wrapper <bool> >(false, null, Array.Empty <LogItem>())); }
public async Task <PipelineResult <Wrapper <bool> > > Execute(IWorkItem?workItem, BaseOperation from, Func <VariableCollection, ResolveContext, Task> resolveCallback, OperationWatcher watcher, ILogger logger) { Assert.IsNotNull(from); Assert.IsNotNull(resolveCallback); ResolveContext context = new ResolveContext(); WorkspaceSettings?settings = await Settings.ConfigureAwait(false); if (settings != null) { _ = context.SetShell(settings.DefaultShell); } _ = context.SetWorkingDirectory(PathRoot.FullName); if (workItem != null && workItem is WorkItem item) { _ = context.SetInputPath(item.RelativePath); } await resolveCallback(from.GetVariables(), context).ConfigureAwait(false); PipelineBuilder <OperationWatcher, Wrapper <bool> > builder = await from.Resolve(context).ConfigureAwait(false); Pipeline <OperationWatcher, Wrapper <bool> > pipeline = await builder.Build(watcher, logger).ConfigureAwait(false); return(await pipeline.Consume().ConfigureAwait(false)); }