Example #1
0
 /// <summary>
 /// Appends the arguments required to authenticate against Subversion.
 /// </summary>
 /// <param name="buffer">The argument builder.</param>
 protected virtual void AppendCommonSwitches(ProcessArgumentBuilder buffer)
 {
     buffer.AddArgument("--username", Username);
     buffer.AddArgument("--password", Password);
     buffer.AddArgument("--non-interactive");
     buffer.AddArgument("--no-auth-cache");
 }
Example #2
0
        /// <summary>
        /// Gets the process arguments.
        /// </summary>
        /// <param name="result">The result.</param>
        /// <returns></returns>
        /// <remarks></remarks>
        protected override string GetProcessArguments(IIntegrationResult result)
        {
            ProcessArgumentBuilder b = new ProcessArgumentBuilder();

            b.AddArgument("/nologo");
            if (!string.IsNullOrEmpty(Targets))
            {
                b.AddArgument("/t:");
                string targets = string.Empty;
                foreach (string target in Targets.Split(';'))
                {
                    if (!(targets != null && targets.Length == 0))
                    {
                        targets = string.Format(System.Globalization.CultureInfo.CurrentCulture, "{0};{1}", targets, StringUtil.AutoDoubleQuoteString(target));
                    }
                    else
                    {
                        targets = StringUtil.AutoDoubleQuoteString(target);
                    }
                }
                b.Append(targets);
            }
            b.AppendArgument(GetPropertyArgs(result));
            b.AppendArgument(BuildArgs);
            b.AddArgument(ProjectFile);
            b.AppendArgument(GetLoggerArgs(result));

            return(b.ToString());
        }
Example #3
0
        /// <summary>
        /// Gets the branch head for the current branch or the tip if no branch is configured.
        /// </summary>
        /// <param name="result">The integration result.</param>
        /// <returns>The process result.</returns>
        /// <remarks>Uses the output template to render the process output as XML.</remarks>
        private ProcessResult HgTip(IIntegrationResult result)
        {
            ProcessArgumentBuilder buffer = new ProcessArgumentBuilder();

            buffer.AddArgument("log");

            if (!string.IsNullOrEmpty(Branch))
            {
                buffer.AddArgument("-b", Branch);
                buffer.AddArgument("-r", Branch);
            }
            else
            {
                buffer.AddArgument("-r", "tip");
            }

            buffer.AddArgument("--template", "{rev}");

            var bpi = GetBuildProgressInformation(result);

            bpi.SignalStartRunTask(string.Concat("hg ", buffer.ToString()));

            ProcessExecutor.ProcessOutput += ProcessExecutor_ProcessOutput;

            ProcessResult processResult = Execute(NewProcessInfo(buffer.ToString(), result));

            ProcessExecutor.ProcessOutput -= ProcessExecutor_ProcessOutput;

            return(processResult);
        }
Example #4
0
		private void RemoveReadOnlyAttribute()
		{
			ProcessArgumentBuilder buffer = new ProcessArgumentBuilder();
			buffer.AddArgument("-R");
			buffer.AddArgument("/s", System.IO.Path.Combine(SandboxRoot, "*"));
			Execute(new ProcessInfo("attrib", buffer.ToString()));
		}
Example #5
0
        private ProcessInfo VersionHistoryProcessInfo(IIntegrationResult from, IIntegrationResult to, bool bForceGetLatestVersion)
        {
            ProcessArgumentBuilder builder = new ProcessArgumentBuilder();

            builder.AddArgument("versionhistory", _shim.Folder);

            // Look only for changes, unless caller asked us to get the latest folder
            // version regardless of whether there's been a change.
            if (!bForceGetLatestVersion)
            {
                // use folderVersion when possible because it's faster and more accurate
                if (_folderVersion != 0)
                {
                    builder.AddArgument("-beginversion", (_folderVersion + 1).ToString());
                }
                else
                {
                    builder.AddArgument("-begindate", from.StartTime.ToString("s"));
                    builder.AddArgument("-enddate", to.StartTime.ToString("s"));
                }
            }

            // we only ever need the most recent change
            builder.AddArgument("-rowlimit", "1");

            AddCommonOptionalArguments(builder);
            return(ProcessInfoFor(builder.ToString(), from));
        }
Example #6
0
        /// <summary>
        /// Get the list of changesets within a range of revisions (from, to).
        /// </summary>
        /// <param name="to">The integration result.</param>
        /// <param name="fromId">The start of the range of revisions</param>
        /// <param name="toId">The end of the range of revisions.</param>
        /// <returns>The process result.</returns>
        /// <remarks>Uses the output template to render the process output as XML.</remarks>
        private ProcessResult HgLog(IIntegrationResult to, int fromId, int toId)
        {
            ProcessArgumentBuilder buffer = new ProcessArgumentBuilder();

            buffer.AddArgument("log");

            if (!string.IsNullOrEmpty(Branch))
            {
                buffer.AddArgument("-b", Branch);
            }

            buffer.AddArgument("-r", string.Format("{0}:{1}", fromId, toId));
            buffer.AddArgument("--style", "xml");
            buffer.AddArgument("-v");

            var bpi = GetBuildProgressInformation(to);

            bpi.SignalStartRunTask(string.Concat("hg ", buffer.ToString()));

            ProcessExecutor.ProcessOutput += ProcessExecutor_ProcessOutput;

            ProcessResult processResult = Execute(NewProcessInfo(buffer.ToString(), to));

            ProcessExecutor.ProcessOutput -= ProcessExecutor_ProcessOutput;

            return(processResult);
        }
Example #7
0
        /// <summary>
        /// Commits modifications that have been made during the integration and if configured also newly created files to the local repository.
        /// </summary>
        /// <param name="addRemove">Bool to indicate if the add-remove option should be used.</param>
        /// <param name="commitMessage">The commit message to be used.</param>
        /// <param name="result">The integration result.</param>
        /// <returns>The process result.</returns>
        /// <remarks>Optionally uses the add-remove flag (-A) to allow to commit untracked files and file deletions.</remarks>
        private ProcessResult HgCommit(bool addRemove, string commitMessage, IIntegrationResult result)
        {
            ProcessArgumentBuilder buffer = new ProcessArgumentBuilder();

            buffer.AddArgument("commit");

            if (addRemove)
            {
                buffer.AddArgument("-A");
            }

            if (!string.IsNullOrEmpty(CommitterName))
            {
                buffer.AddArgument("-u", CommitterName);
            }

            buffer.AddArgument("-m", commitMessage);

            var bpi = GetBuildProgressInformation(result);

            bpi.SignalStartRunTask(string.Concat("hg ", buffer.ToString()));

            ProcessExecutor.ProcessOutput += ProcessExecutor_ProcessOutput;

            ProcessResult processResult = Execute(NewProcessInfo(buffer.ToString(), result, ProcessPriorityClass.Normal, new int[] { 0, 1 }));

            ProcessExecutor.ProcessOutput -= ProcessExecutor_ProcessOutput;

            return(processResult);
        }
Example #8
0
            public override string ToString()
            {
                ProcessArgumentBuilder processArgumentBuilder = new ProcessArgumentBuilder();

                string[] strArrays = this.assemblies;
                for (int i = 0; i < (int)strArrays.Length; i++)
                {
                    processArgumentBuilder.AddArgument(strArrays[i]);
                }
                if (!string.IsNullOrEmpty(outputfile))
                {
                    processArgumentBuilder.AddArgument("--output", "=", outputfile);
                }
                this.AppendCategoriesArg(processArgumentBuilder);

                if (Options != null)
                {
                    foreach (var kv in Options)
                    {
                        if (string.IsNullOrEmpty(kv.Value))
                        {
                            processArgumentBuilder.AddArgument("--" + kv.Key);
                        }
                        else
                        {
                            processArgumentBuilder.AddArgument("--" + kv.Key, "=", kv.Value);
                        }
                    }
                }

                Log.Info("ProcessArgumentBuilder : " + processArgumentBuilder.ToString());
                return(processArgumentBuilder.ToString());
            }
Example #9
0
        /// <summary>
        /// Pushes the committed changesets and created tags to the configured remote repository.
        /// </summary>
        /// <param name="result">The integration result.</param>
        /// <returns>The process result.</returns>
        /// <remarks>Uses the force flag (-f) to push even if new remote heads are created.</remarks>
        private ProcessResult HgPush(IIntegrationResult result)
        {
            ProcessArgumentBuilder buffer = new ProcessArgumentBuilder();

            buffer.AddArgument("push");

            if (!string.IsNullOrEmpty(Branch))
            {
                buffer.AddArgument("-b", Branch);
            }

            buffer.AddArgument("-f");
            buffer.AddArgument(Repository);

            var bpi = GetBuildProgressInformation(result);

            bpi.SignalStartRunTask(string.Concat("hg ", buffer.ToString()));

            ProcessExecutor.ProcessOutput += ProcessExecutor_ProcessOutput;

            ProcessResult processResult = Execute(NewProcessInfo(buffer.ToString(), result));

            ProcessExecutor.ProcessOutput -= ProcessExecutor_ProcessOutput;

            return(processResult);
        }
Example #10
0
        /// <summary>
        /// Creates a named tag (label) for the currently used revision in the local repository.
        /// </summary>
        /// <param name="tagName">The name of the tag.</param>
        /// <param name="tagMessage">The log message to be used.</param>
        /// <param name="result">The integration result.</param>
        /// <returns>The process result.</returns>
        /// <remarks>Uses the force flag (-f) to even create the tag if a tag with the same name already exists.</remarks>
        private ProcessResult HgTag(string tagName, string tagMessage, IIntegrationResult result)
        {
            ProcessArgumentBuilder buffer = new ProcessArgumentBuilder();

            buffer.AddArgument("tag");
            buffer.AddArgument("-m", tagMessage);

            if (!string.IsNullOrEmpty(CommitterName))
            {
                buffer.AddArgument("-u", CommitterName);
            }

            buffer.AddArgument("-f");
            buffer.AddArgument(tagName);

            var bpi = GetBuildProgressInformation(result);

            bpi.SignalStartRunTask(string.Concat("hg ", buffer.ToString()));

            ProcessExecutor.ProcessOutput += ProcessExecutor_ProcessOutput;

            ProcessResult processResult = Execute(NewProcessInfo(buffer.ToString(), result));

            ProcessExecutor.ProcessOutput -= ProcessExecutor_ProcessOutput;

            return(processResult);
        }
Example #11
0
        /// <summary>
        /// Clone a repository into a new directory with "git clone 'repository' 'working directory'".
        /// </summary>
        /// <param name="result">IIntegrationResult of the current build.</param>
        private void GitClone(IIntegrationResult result)
        {
            string wd = BaseWorkingDirectory(result);

            ProcessArgumentBuilder buffer = new ProcessArgumentBuilder();

            buffer.AddArgument("clone");
            buffer.AddArgument(Repository);
            buffer.AddArgument(wd);

            // initialize progress information
            var bpi = GetBuildProgressInformation(result);

            bpi.SignalStartRunTask(string.Concat("git ", buffer.ToString()));

            // enable Stdout monitoring
            ProcessExecutor.ProcessOutput += ProcessExecutor_ProcessOutput;

            ProcessInfo pi = NewProcessInfo(buffer.ToString(), result);

            // Use upper level of the working directory, because the
            // working directory currently does not exist and
            // will be created by "git clone". "git clone" will fail if
            // the working directory already exist.
            pi.WorkingDirectory = Path.GetDirectoryName(wd.Trim().TrimEnd(Path.DirectorySeparatorChar));
            Execute(pi);

            // remove Stdout monitoring
            ProcessExecutor.ProcessOutput -= ProcessExecutor_ProcessOutput;
        }
Example #12
0
        // cvs [-d :ext:mycvsserver:/cvsroot/myrepo] -q log -N "-d>2004-12-24 12:00:00 GMT" -rmy_branch (with branch)
        // cvs [-d :ext:mycvsserver:/cvsroot/myrepo] -q log -Nb "-d>2004-12-24 12:00:00 GMT" (without branch)
        //		public const string HISTORY_COMMAND_FORMAT = @"{0}-q log -N{3} ""-d>{1}""{2}";		// -N means 'do not show tags'
        private string BuildLogProcessInfoArgs(DateTime from)
        {
            ProcessArgumentBuilder buffer = new ProcessArgumentBuilder();

            AppendCvsRoot(buffer);
            buffer.AddArgument("-q");             // quiet
            buffer.AddArgument("rlog");
            buffer.AddArgument("-N");             // do not show tags
            buffer.AppendIf(SuppressRevisionHeader, "-S");
            if (string.IsNullOrEmpty(Branch))
            {
                buffer.AddArgument("-b");                 // only list revisions on HEAD
            }
            else
            {
                buffer.AppendArgument("-r{0}", Branch);                 // list revisions on branch
            }
            buffer.AppendArgument(@"""-d>{0}""", FormatCommandDate(from));
            if (!string.IsNullOrEmpty(RestrictLogins))
            {
                foreach (string login in RestrictLogins.Split(','))
                {
                    buffer.AppendArgument("-w{0}", login.Trim());
                }
            }
            buffer.AddArgument(Module);
            return(buffer.ToString());
        }
Example #13
0
        /// <summary>
        /// Gets the process arguments.
        /// </summary>
        /// <param name="result">The result.</param>
        /// <returns></returns>
        /// <remarks></remarks>
        protected override string GetProcessArguments(IIntegrationResult result)
        {
            ProcessArgumentBuilder args = new ProcessArgumentBuilder();

            args.AddArgument("--rakefile", Rakefile);

            if (Silent)
            {
                args.AddArgument("--silent");
            }
            else if (Quiet)
            {
                args.AddArgument("--quiet");
            }

            if (Trace)
            {
                args.AddArgument("--trace");
            }

            args.AppendArgument(BuildArgs);

            foreach (string t in Targets)
            {
                args.AppendArgument(t);
            }

            return(args.ToString());
        }
Example #14
0
        /// <summary>
        /// Initialize the working directory with the hg init command
        /// </summary>
        /// <param name="result">The integration result.</param>
        /// <returns>The process result.</returns>
        /// <remarks>Uses the file system to ensure the working directory exists before calling hg init.</remarks>
        private ProcessResult HgInit(IIntegrationResult result)
        {
            string wd = BaseWorkingDirectory(result);

            _fileSystem.EnsureFolderExists(wd);

            ProcessArgumentBuilder buffer = new ProcessArgumentBuilder();

            buffer.AddArgument("init");
            buffer.AddArgument(wd);

            var bpi = GetBuildProgressInformation(result);

            bpi.SignalStartRunTask(string.Concat("hg ", buffer.ToString()));

            ProcessExecutor.ProcessOutput += ProcessExecutor_ProcessOutput;

            ProcessInfo pi = NewProcessInfo(buffer.ToString(), result);

            pi.WorkingDirectory = Path.GetDirectoryName(wd.Trim().TrimEnd(Path.DirectorySeparatorChar));
            ProcessResult processResult = Execute(pi);

            ProcessExecutor.ProcessOutput -= ProcessExecutor_ProcessOutput;

            return(processResult);
        }
Example #15
0
        private ProcessInfo GetSourceProcessInfo(IIntegrationResult result, bool getByLabel)
        {
            ProcessArgumentBuilder builder = new ProcessArgumentBuilder();

            if (getByLabel)
            {
                builder.AddArgument("getlabel", Folder);
                builder.AddArgument(result.Label);
            }
            else
            {
                builder.AddArgument("get", Folder);
            }
            if (UseVaultWorkingDirectory)
            {
                builder.AppendArgument("-merge overwrite -performdeletions removeworkingcopy");
            }
            else
            {
                builder.AddArgument("-destpath", result.BaseFromWorkingDirectory(WorkingDirectory));
                builder.AppendArgument("-merge overwrite");
            }
            builder.AppendArgument("-setfiletime checkin -makewritable");
            AddCommonOptionalArguments(builder);
            return(ProcessInfoFor(builder.ToString(), result));
        }
Example #16
0
 private void AddCommonOptionalArguments(ProcessArgumentBuilder builder)
 {
     builder.AddArgument("-host", Host);
     builder.AddArgument("-user", Username);
     builder.AddArgument("-password", Password);
     builder.AddArgument("-repository", Repository);
     builder.AppendIf(Ssl, "-ssl");
 }
Example #17
0
        private void git_push_tags(IIntegrationResult result)
        {
            ProcessArgumentBuilder buffer = new ProcessArgumentBuilder();

            buffer.AddArgument("push");
            buffer.AddArgument("--tags");
            Execute(NewProcessInfo(buffer.ToString(), BaseWorkingDirectory(result)));
        }
Example #18
0
        private void git_merge(IIntegrationResult result)
        {
            ProcessArgumentBuilder buffer = new ProcessArgumentBuilder();

            buffer.AddArgument("merge");
            buffer.AddArgument(string.Format("origin/{0}", Branch));
            Execute(NewProcessInfo(buffer.ToString(), BaseWorkingDirectory(result)));
        }
Example #19
0
        private void RemoveReadOnlyAttribute()
        {
            ProcessArgumentBuilder buffer = new ProcessArgumentBuilder();

            buffer.AddArgument("-R");
            buffer.AddArgument("/s", SandboxRoot + "\\*");
            Execute(new ProcessInfo("attrib", buffer.ToString()));
        }
Example #20
0
        /// <summary>
        /// Add all modified and all untracked files that are not ignored by .gitignore
        /// to the git index with the "git add --all" command.
        /// </summary>
        /// <param name="result">IIntegrationResult of the current build.</param>
        private void GitAddAll(IIntegrationResult result)
        {
            ProcessArgumentBuilder buffer = new ProcessArgumentBuilder();

            buffer.AddArgument("add");
            buffer.AddArgument("--all");
            Execute(NewProcessInfo(buffer.ToString(), result));
        }
Example #21
0
        /// <summary>
        /// Initialize the git submodules.
        /// </summary>
        /// <param name="result">IIntegrationResult of the current build.</param>
        private void GitInitSubmodules(IIntegrationResult result)
        {
            ProcessArgumentBuilder buffer = new ProcessArgumentBuilder();

            buffer.AddArgument("submodule");
            buffer.AddArgument("init");
            Execute(NewProcessInfo(buffer.ToString(), result));
        }
Example #22
0
        private void git_clone(IIntegrationResult result)
        {
            ProcessArgumentBuilder buffer = new ProcessArgumentBuilder();

            buffer.AddArgument("clone");
            buffer.AddArgument(Repository);
            buffer.AddArgument(BaseWorkingDirectory(result));
            Execute(NewProcessInfo(buffer.ToString(), BaseWorkingDirectory(result)));
        }
Example #23
0
        /// <summary>
        /// Call "git config 'name' 'value'" to set local repository properties.
        /// </summary>
        /// <param name="name">Name of the config parameter.</param>
        /// <param name="value">Value of the config parameter.</param>
        /// <param name="result">IIntegrationResult of the current build.</param>
        private void GitConfigSet(string name, string value, IIntegrationResult result)
        {
            ProcessArgumentBuilder buffer = new ProcessArgumentBuilder();

            buffer.AddArgument("config");
            buffer.AddArgument(name);
            buffer.AddArgument(value);
            Execute(NewProcessInfo(buffer.ToString(), result));
        }
Example #24
0
        private ProcessResult GitLogHistory(string branchNameOrRevision, IIntegrationResult to)
        {
            ProcessArgumentBuilder buffer = new ProcessArgumentBuilder();

            buffer.AddArgument("log");
            buffer.AddArgument(branchNameOrRevision);
            AppendLogOptions(buffer);
            return(Execute(NewProcessInfo(buffer.ToString(), to)));
        }
Example #25
0
        private void git_config(string name, string value, IIntegrationResult result)
        {
            ProcessArgumentBuilder buffer = new ProcessArgumentBuilder();

            buffer.AddArgument("config");
            buffer.AddArgument(name);
            buffer.AddArgument(value);
            Execute(NewProcessInfo(buffer.ToString(), BaseWorkingDirectory(result)));
        }
Example #26
0
        private void git_reset(IIntegrationResult result)
        {
            ProcessArgumentBuilder buffer = new ProcessArgumentBuilder();

            buffer.AddArgument("reset");
            buffer.AddArgument("HEAD");
            buffer.AddArgument("--hard");
            Execute(NewProcessInfo(buffer.ToString(), BaseWorkingDirectory(result)));
        }
Example #27
0
        /// <summary>
        /// Get the commit history including changes between <paramref name="from"/> and origin/<paramref name="branchName"/>
        /// </summary>
        /// <param name="branchName">Name of the branch.</param>
        /// <param name="from">The commit from which to start logging.</param>
        /// <param name="to">IIntegrationResult of the current build.</param>
        /// <returns>Result of the "git log" command.</returns>
        private ProcessResult GitLogHistory(string branchName, string from, IIntegrationResult to)
        {
            ProcessArgumentBuilder buffer = new ProcessArgumentBuilder();

            buffer.AddArgument("log");
            buffer.AddArgument(string.Concat(from, "..origin/", branchName));
            AppendLogOptions(buffer);
            return(Execute(NewProcessInfo(buffer.ToString(), to)));
        }
 private void AddStandardArguments(
     ProcessArgumentBuilder builder,
     string destinationDirectory)
 {
     builder.AddArgument(RepositoryRoot);
     builder.AddArgument(destinationDirectory);
     builder.Append(standardArguments);
     builder.Append(AdditionalArguments);
 }
Example #29
0
        private ProcessInfo RemoveLabelProcessInfo(IIntegrationResult result)
        {
            ProcessArgumentBuilder builder = new ProcessArgumentBuilder();

            builder.AddArgument("deletelabel", _shim.Folder);
            builder.AddArgument(result.Label);
            AddCommonOptionalArguments(builder);
            return(ProcessInfoFor(builder.ToString(), result));
        }
Example #30
0
        /// <summary>
        /// Create a unsigned tag with "git tag -a -m 'message' 'tag name'".
        /// </summary>
        /// <param name="tagName">Name of the tag.</param>
        /// <param name="tagMessage">Tag commit message.</param>
        /// <param name="result">IIntegrationResult of the current build.</param>
        private void GitCreateTag(string tagName, string tagMessage, IIntegrationResult result)
        {
            ProcessArgumentBuilder buffer = new ProcessArgumentBuilder();

            buffer.AddArgument("tag");
            buffer.AddArgument("-a");
            buffer.AddArgument("-m", tagMessage);
            buffer.AddArgument(tagName);
            Execute(NewProcessInfo(buffer.ToString(), result));
        }
        public void Test_With_Single_Argument(Type escapeHandlerType, string sigil)
        {
            // Arrange
            var escapeHandler = Activator.CreateInstance(escapeHandlerType, new object[] { sigil }) as IArgumentEscapeHandler;
            var builder = new ProcessArgumentBuilder(escapeHandler);
            builder.AddArgument("somefile.txt");

            // Act
            var result = builder.Build();

            // Assert
            Assert.Equal("somefile.txt", result);
        }
        public void Test_That_Argument_Starting_With_Sigil_Is_Quoted(Type escapeHandlerType, string sigil)
        {
            // Arrange
            var escapeHandler = Activator.CreateInstance(escapeHandlerType, new object[] { sigil }) as IArgumentEscapeHandler;
            var builder = new ProcessArgumentBuilder(escapeHandler);
            builder.AddArgument($"{sigil}test");

            // Act
            var result = builder.Build();

            // Assert
            Assert.Equal($"\"{sigil}test\"", result);
        }