Пример #1
0
        protected override async Task <int> Handle(CArgument argument, IConsole console, InvocationContext context, PipelineContext pipeline, CancellationToken cancellationToken)
        {
            IWorkspace workspace = pipeline.Services.GetWorkspace();
            ITerminal  terminal  = console.GetTerminal();
            string     template  = argument.Template;

            Packagings.Package <BaseTemplate>?tplItem = await workspace.Templates.GetValue(template);

            if (tplItem == null)
            {
                terminal.OutputErrorLine($"No this template: {template}.");
                return(1);
            }
            BaseTemplate?tpl = tplItem.Data;

            if (tpl == null)
            {
                terminal.OutputErrorLine($"Can not load this template: {template}.");
                return(1);
            }

            IWorkItem?item = null;

            try
            {
                item = await workspace.Create(argument.Name, tpl,
                                              (vars, resolveContext) => Utils.ResolveCallback(vars, resolveContext, context, pipeline));
            }
            catch (ArgumentException)
            {
                return(-1);
            }
            return(0);
        }
        public override async Task <int> Handle(CArgument argument, ParserContext parser, PipelineContext pipeline, CancellationToken cancellationToken)
        {
            IWorkspace workspace = pipeline.Services.GetWorkspace();
            ITerminal  terminal  = pipeline.Services.GetTerminal();

            if (!argument.Clear)
            {
                IWorkItem?res = await workspace.Create("", null,
                                                       (vars, resolveContext) => Utils.ResolveCallback(vars, resolveContext, parser, pipeline));

                if (res != null)
                {
                    pipeline.Services.Replace <IWorkItem>(res);
                }
                else
                {
                    terminal.Output.WriteErrorLine("Create work-item failed.");
                    return(-1);
                }
            }
            else
            {
                pipeline.Services.Remove <IWorkItem>();
            }
            return(0);
        }