// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. namespace WixToolset.BaseBuildTasks { using System; using System.Collections.Generic; using System.Globalization; using System.IO; using Microsoft.Build.Framework; using Microsoft.Build.Utilities; /// /// Helper class for appending the command line arguments. /// public class WixCommandLineBuilder : CommandLineBuilder { internal const int Unspecified = -1; /// /// Append a switch to the command line if the value has been specified. /// /// Switch to append. /// Value specified by the user. public void AppendIfSpecified(string switchName, int value) { if (value != Unspecified) { this.AppendSwitchIfNotNull(switchName, value.ToString(CultureInfo.InvariantCulture)); } } /// /// Append a switch to the command line if the condition is true. /// /// Switch to append. /// Condition specified by the user. public void AppendIfTrue(string switchName, bool condition) { if (condition) { this.AppendSwitch(switchName); } } /// /// Append a switch to the command line if any values in the array have been specified. /// /// Switch to append. /// Values specified by the user. public void AppendArrayIfNotNull(string switchName, IEnumerable values) { if (values != null) { foreach (ITaskItem value in values) { this.AppendSwitchIfNotNull(switchName, value); } } } /// /// Append a switch to the command line if any values in the array have been specified. /// /// Switch to append. /// Values specified by the user. public void AppendArrayIfNotNull(string switchName, IEnumerable values) { if (values != null) { foreach (string value in values) { this.AppendSwitchIfNotNull(switchName, value); } } } /// /// Append arbitrary text to the command-line if specified. /// /// Text to append. public void AppendTextIfNotNull(string textToAppend) { if (!String.IsNullOrEmpty(textToAppend)) { this.AppendSpaceIfNotEmpty(); this.AppendTextUnquoted(textToAppend); } } /// /// Append arbitrary text to the command-line if specified. /// /// Text to append. public void AppendTextIfNotWhitespace(string textToAppend) { if (!String.IsNullOrWhiteSpace(textToAppend)) { this.AppendSpaceIfNotEmpty(); this.AppendTextUnquoted(textToAppend); } } } }