예제 #1
0
        protected override void DoExecute(ITaskContext context)
        {
            string root = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
            string dnx  = Path.Combine(root, string.Format(CultureInfo.InvariantCulture, @".dnx\runtimes\{0}\bin", ClrVersionName));

            IRunProgramTask t = CommonTasksFactory.CreateRunProgramTask(Path.Combine(dnx, "dnx.exe"))
                                .EncloseParametersInQuotes(false);

            if (Timeout != null)
            {
                t.ExecutionTimeout(Timeout.Value);
            }

            if (!string.IsNullOrEmpty(WorkFolder))
            {
                t.SetWorkingDir(WorkFolder);
            }

            foreach (string s in Parameters)
            {
                t.AddArgument(s);
            }

            t.Execute(context);
        }
예제 #2
0
        protected override void BeforeExecute(ITaskContextInternal context, IRunProgramTask runProgramTask)
        {
            var args = GetArguments();

            if (string.IsNullOrEmpty(_projectName))
            {
                if (args.Count == 0 || args[0].StartsWith("-"))
                {
                    var solustionFileName = context.Properties.Get <string>(BuildProps.SolutionFileName, null);
                    if (solustionFileName != null)
                    {
                        InsertArgument(0, solustionFileName);
                    }
                }
            }
            else
            {
                InsertArgument(0, _projectName);
            }

            if (!args.Exists(x => x == "-c" || x == "--configuration"))
            {
                var configuration = context.Properties.Get <string>(BuildProps.BuildConfiguration, null);
                if (configuration != null)
                {
                    Configuration(configuration);
                }
            }

            base.BeforeExecute(context, runProgramTask);
        }
예제 #3
0
        protected override void DoExecute(ITaskContext context)
        {
            string msbuildPath = FindMSBuildPath(context);

            IRunProgramTask task = CommonTasksFactory.CreateRunProgramTask(msbuildPath);

            task
            .AddArgument(solutionFileName)
            .AddArgument("/p:Configuration={0}", buildConfiguration)
            .AddArgument("/p:Platform=Any CPU")
            .AddArgument("/consoleloggerparameters:NoSummary")
            .AddArgument("/maxcpucount:{0}", MaxCpuCount);

            if (UseSolutionDirAsWorkingDir)
            {
                task.SetWorkingDir(Path.GetDirectoryName(solutionFileName));
            }

            if (Target != null)
            {
                task.AddArgument("/t:{0}", Target);
            }

            task.Execute(context);
        }
예제 #4
0
        protected override void DoExecute(ITaskContext context)
        {
            string msbuildPath = FindExecutableBuildPath(context);

            IRunProgramTask task = CommonTasksFactory.CreateRunProgramTask(msbuildPath);

            task.EncloseParametersInQuotes(false);

            if (!string.IsNullOrEmpty(WorkFolder))
            {
                task.SetWorkingDir(WorkFolder);
            }

            if (!string.IsNullOrEmpty(SolutionFile))
            {
                task.AddArgument(SolutionFile);
            }

            if (Timeout != null)
            {
                task.ExecutionTimeout(Timeout.Value);
            }

            foreach (var p in Parameters)
            {
                task.AddArgument(p);
            }

            if (CpuCount > 0)
            {
                task.AddArgument("/maxcpucount:{0}", CpuCount);
            }

            task.Execute(context);
        }
예제 #5
0
        /// <inheritdoc />
        protected override TResult DoExecute(ITaskContextInternal context)
        {
            if (string.IsNullOrEmpty(ExecutablePath))
            {
                throw new TaskExecutionException($"{nameof(ExecutablePath)} must be set.", 5);
            }

            _task = context.Tasks()
                    .RunProgramTask(ExecutablePath)
                    .DoNotLogTaskExecutionInfo()
                    .WorkingFolder(ExecuteWorkingFolder);

            if (NoOutputLog)
            {
                _task.DoNotLogOutput();
            }

            if (DoNotLog)
            {
                _task.NoLog();
            }

            if (KeepProgramOutput)
            {
                _task.CaptureOutput();
            }

            if (KeepProgramErrorOutput)
            {
                _task.CaptureErrorOutput();
            }

            BeforeExecute(context, _task);
            AddOrOverrideArgumentsFromConsole(context);
            var argumentsFlat = ValidateAndGetArgumentsFlat();

            foreach (var arg in argumentsFlat)
            {
                _task.WithArguments(arg.arg, arg.maskArg);
            }

            var result = _task
                         .ChangeDefaultAdditionalOptionPrefix(AdditionalOptionPrefix)
                         .AddPrefixToAdditionalOptionKey(_prefixToAdditionalOptionKeyFunc)
                         .ChangeAdditionalOptionKeyValueSeperator(_additionalOptionKeyValueSeperator)
                         .AddNewAdditionalOptionPrefix(_additionalOptionPrefixes)
                         .Execute(context);

            if (typeof(TResult) == typeof(int))
            {
                return((TResult)(object)result);
            }

            return(default(TResult));
        }
예제 #6
0
        public void ResolveRunProgramTask()
        {
            IServiceCollection sc = new ServiceCollection();

            sc.AddTransient <ICommandFactory, CommandFactory>();

            IServiceProvider pr       = sc.BuildServiceProvider();
            IRunProgramTask  instance = ActivatorUtilities.CreateInstance <RunProgramTask>(pr, "test");

            Assert.IsType <RunProgramTask>(instance);
        }
예제 #7
0
        protected override void BeforeExecute(ITaskContextInternal context, IRunProgramTask runProgramTask)
        {
            if (!GetArguments().Exists(x => x == "-c" || x == "--configuration"))
            {
                var configuration = context.Properties.Get <string>(BuildProps.BuildConfiguration, null);
                if (configuration != null)
                {
                    Configuration(configuration);
                }
            }

            base.BeforeExecute(context, runProgramTask);
        }
예제 #8
0
        protected override int DoExecute(ITaskContextInternal context)
        {
            IRunProgramTask task = context
                                   .Tasks()
                                   .RunProgramTask("systemctl")
                                   .WithArguments(_command, _service);

            if (DoNotFail)
            {
                task.DoNotFailOnError();
            }

            return(task.Execute(context));
        }
예제 #9
0
        protected override void BeforeExecute(ITaskContextInternal context, IRunProgramTask runProgramTask)
        {
            var args = GetArguments();

            if (args.Count == 0 || args[0].StartsWith("-"))
            {
                var solustionFileName = context.Properties.Get <string>(BuildProps.SolutionFileName, null);
                if (solustionFileName != null)
                {
                    Project(solustionFileName);
                }
            }

            base.BeforeExecute(context, runProgramTask);
        }
예제 #10
0
        protected override int DoExecute(ITaskContextInternal context)
        {
            string program = ExecutablePath;

            if (string.IsNullOrEmpty(program))
            {
                program = context.Properties.GetDotnetExecutable();
            }

            if (string.IsNullOrEmpty(program))
            {
                context.Fail("Dotnet executable not set!", -1);
                return(-1);
            }

            IRunProgramTask task = context.Tasks().RunProgramTask(program);

            if (NoOutputLog)
            {
                task.DoNotLogOutput();
            }

            if (DoNotLog)
            {
                task.NoLog();
            }

            BeforeExecute(context);
            var argumentsFlat = ValidateAndGetArgumentsFlat();

            task
            .WithArguments(Command);

            foreach (var arg in argumentsFlat)
            {
                task.WithArguments(arg.arg, arg.maskArg);
            }

            task
            .WorkingFolder(ExecuteWorkingFolder)
            .CaptureErrorOutput()
            .CaptureOutput()
            .ExecuteVoid(context);

            return(0);
        }
예제 #11
0
        protected override int DoExecute(ITaskContextInternal context)
        {
            string program = _dotnetExecutable;

            if (string.IsNullOrEmpty(program))
            {
                program = context.Properties.GetDotnetExecutable();
            }

            if (string.IsNullOrEmpty(program))
            {
                context.Fail("Dotnet executable not set!", -1);
                return(-1);
            }

            BeforeExecute(context);
            IRunProgramTask task = context.Tasks().RunProgramTask(program);

            if (_doNotLogOutput)
            {
                task.DoNotLogOutput();
            }

            if (DoNotLog)
            {
                task.NoLog();
            }

            task
            .WithArguments(Command)
            .WithArguments(Arguments.ToArray())
            .WorkingFolder(_workingFolder)
            .CaptureErrorOutput()
            .CaptureOutput()
            .ExecuteVoid(context);

            return(0);
        }
예제 #12
0
        /// <inheritdoc />
        protected override int DoExecute(ITaskContextInternal context)
        {
            PrepareExecutableParameters(context);

            IRunProgramTask task = context.Tasks().RunProgramTask(ExecutablePath);

            if (NoOutputLog)
            {
                task.DoNotLogOutput();
            }

            if (DoNotLog)
            {
                task.NoLog();
            }

            task
            .CaptureErrorOutput()
            .CaptureOutput()
            .WorkingFolder(ExecuteWorkingFolder)
            .WithArguments(_arguments.ToArray());

            return(task.Execute(context));
        }
 protected override void BeforeExecute(ITaskContextInternal context, IRunProgramTask runProgramTask)
 {
     runProgramTask.WithArguments(Command);
     base.BeforeExecute(context, runProgramTask);
 }
예제 #14
0
 protected virtual void BeforeExecute(ITaskContextInternal context, IRunProgramTask runProgramTask)
 {
 }