| File: CommandLine\CommandArgumentPair.cs | Web Access |
| Project: src\vstest\src\vstest.console\vstest.console.csproj (vstest.console) |
// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. using System; using System.Diagnostics.CodeAnalysis; using Microsoft.VisualStudio.TestPlatform.ObjectModel; namespace Microsoft.VisualStudio.TestPlatform.CommandLine; /// <summary> /// Breaks a string down into command and argument based on the following format: /// /command:argument. /// </summary> internal class CommandArgumentPair { /// <summary> /// The separator. /// </summary> internal const string Separator = ":"; /// <summary> /// The command portion of the input. /// </summary> public string Command { get; private set; } /// <summary> /// The argument portion of the input. /// </summary> public string Argument { get; private set; } /// <summary> /// Breaks the provided command line switch into the command and argument pair. /// </summary> /// <param name="input">Input to break up.</param> public CommandArgumentPair(string input) { ValidateArg.NotNullOrWhiteSpace(input, nameof(input)); Parse(input); } /// <summary> /// Stores the provided command and argument pair. /// </summary> /// <param name="command">The command portion of the input.</param> /// <param name="argument">The argument portion of the input.</param> public CommandArgumentPair(string command, string argument) { ValidateArg.NotNullOrWhiteSpace(command, nameof(command)); Command = command; Argument = argument; } /// <summary> /// Parses the input into the command and argument parts. /// </summary> /// <param name="input">Input string to parse.</param> [MemberNotNull(nameof(Command), nameof(Argument))] private void Parse(string input) { ValidateArg.NotNull(input, nameof(input)); // Find the index of the separator (":") int index = input.IndexOf(Separator, StringComparison.OrdinalIgnoreCase); if (index == -1) { // No separator was found, so use the input as the command. Command = input; Argument = string.Empty; } else { // Separator was found, so separate the command and the input. Command = input.Substring(0, index); Argument = input.Substring(index + 1); } } }