コード例 #1
0
ファイル: TestWorkspace.cs プロジェクト: CodeRunner-SD/Labs
 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>()));
 }
コード例 #2
0
        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));
        }