src/common/details/commands/parsers/common_token_parsers.cs (152 lines of code) (raw):
//
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.md file in the project root for full license information.
//
using System;
using System.Collections.Generic;
using System.Text;
namespace Azure.AI.Details.Common.CLI
{
public enum FileDirection
{
input,
output
}
public class FileNamedValueTokenParser : NamedValueTokenParser
{
public FileNamedValueTokenParser(string fullName, FileDirection direction, string requiredParts, string defaultValue = "-") :
base(null, $"{direction}.{fullName}.file", $"1{requiredParts}0", "1;0", "@@", null, defaultValue)
{
}
}
public class InputFileNamedValueTokenParser : FileNamedValueTokenParser
{
public InputFileNamedValueTokenParser(string fullName, string requiredParts, string defaultValue = "-") :
base(fullName, FileDirection.input, requiredParts, defaultValue)
{
}
}
public class InputFileOptionalPrefixNamedValueTokenParser : InputFileNamedValueTokenParser
{
public InputFileOptionalPrefixNamedValueTokenParser(string optionalPrefix, string fullName, string fullNameRequiredParts, string defaultValue = "-") :
base($"{optionalPrefix}.{fullName}", $"{NotRequired(optionalPrefix)}{fullNameRequiredParts}", defaultValue)
{
}
}
public class OutputFileNamedValueTokenParser : FileNamedValueTokenParser
{
public OutputFileNamedValueTokenParser(string fullName, string requiredParts, string defaultValue = "-") :
base(fullName, FileDirection.output, requiredParts, defaultValue)
{
}
}
public class OutputFileOptionalPrefixNamedValueTokenParser : OutputFileNamedValueTokenParser
{
public OutputFileOptionalPrefixNamedValueTokenParser(string optionalPrefix, string fullName, string fullNameRequiredParts, string defaultValue = "-") :
base($"{optionalPrefix}.{fullName}", $"{NotRequired(optionalPrefix)}{fullNameRequiredParts}", defaultValue)
{
}
}
public class OutputFileRequiredPrefixNamedValueTokenParser : OutputFileNamedValueTokenParser
{
public OutputFileRequiredPrefixNamedValueTokenParser(string requiredPrefix, string fullName, string fullNameRequiredParts, string defaultValue = "-") :
base($"{requiredPrefix}.{fullName}.output.file", $"{Required(requiredPrefix)}{fullNameRequiredParts}", defaultValue)
{
}
}
public class OutputFileOptionalAndRequiredPrefixNamedValueTokenParser : OutputFileNamedValueTokenParser
{
public OutputFileOptionalAndRequiredPrefixNamedValueTokenParser(string optionalPrefix, string requiredPrefix, string fullName, string fullNameRequiredParts, string defaultValue = "-") :
base($"{optionalPrefix}.{requiredPrefix}.{fullName}", $"{NotRequired(optionalPrefix)}{Required(requiredPrefix)}{fullNameRequiredParts}", defaultValue)
{
}
}
public class CommonNamedValueTokenParsers : NamedValueTokenParserList
{
public CommonNamedValueTokenParsers(bool includeKeyAndRegion = true) : base(
new PinnedNamedValueTokenParser("--help", "--?", "1", "true", "display.help"),
new PinnedNamedValueTokenParser("--version", "--v", "1", "true", "display.version"),
new TrueFalseNamedValueTokenParser("--cls", "x.cls", "01"),
new TrueFalseNamedValueTokenParser("--pause", "x.pause", "01"),
new TrueFalseNamedValueTokenParser("--quiet", "x.quiet", "01"),
new TrueFalseNamedValueTokenParser("--verbose", "x.verbose", "01"),
new Any1ValueNamedValueTokenParser(null, "x.input.path", "001"),
new Any1ValueNamedValueTokenParser(null, "x.output.path", "011"),
new Any1ValueNamedValueTokenParser(null, "x.run.time", "111"),
new Any1ValueNamedValueTokenParser("--save", "x.command.save.as.file", "00100"),
new NamedValueTokenParser(null, "x.command.zip.target", "0011", "1;0", "webjob", null, "webjob"),
new Any1ValueNamedValueTokenParser("--zip", "x.command.zip.as.file", "00100"),
new Any1ValueNamedValueTokenParser(null, "output.zip.file", "110"),
new Any1ValueNamedValueTokenParser("--max", "x.command.max", "001"),
new OptionalWithDefaultNamedValueTokenParser("--repeat", "x.command.repeat", "001", "10"),
new Any1ValueNamedValueTokenParser(null, "check.result.jmes", "110"),
new ParallelCommandsTokenParser(),
new ReplaceForEachTokenParser(),
new ForEachTokenParser()
)
{
if (includeKeyAndRegion)
{
Add(new Any1ValueNamedValueTokenParser("--key", "service.config.key", "001"));
Add(new Any1ValueNamedValueTokenParser("--region", "service.config.region", "001"));
}
}
}
public class ExpectConsoleOutputTokenParser : NamedValueTokenParserList
{
public ExpectConsoleOutputTokenParser() : this("x.command")
{
}
public ExpectConsoleOutputTokenParser(string prefix) : base(
new Any1ValueNamedValueTokenParser(null, $"{prefix}.output.expect.regex", $"{NotRequired(prefix)}010"),
new Any1ValueNamedValueTokenParser(null, $"{prefix}.output.not.expect.regex", $"{NotRequired(prefix)}0110"),
new NamedValueTokenParser(null, $"{prefix}.output.auto.expect.regex", $"{NotRequired(prefix)}0110", "1;0", "true;false", null, "true"),
new NamedValueTokenParser(null, $"{prefix}.output.ignore.check.failures", $"{NotRequired(prefix)}0111", "1;0", null, null, "true", "x.command.output.ignore.check.failures")
) {}
}
public class ExpectDiagnosticOutputTokenParser : NamedValueTokenParserList
{
public ExpectDiagnosticOutputTokenParser() : this("x.command")
{
}
public ExpectDiagnosticOutputTokenParser(string prefix) : base(
new Any1ValueNamedValueTokenParser(null, $"{prefix}.diagnostics.log.expect.regex", $"{NotRequired(prefix)}0110"),
new Any1ValueNamedValueTokenParser(null, $"{prefix}.diagnostics.log.not.expect.regex", $"{NotRequired(prefix)}01110"),
new NamedValueTokenParser(null, $"{prefix}.diagnostics.log.auto.expect.regex.filter", $"{NotRequired(prefix)}011101", "1", null, null, "true", "x.command.diagnostics.log.auto.expect.regex"),
new NamedValueTokenParser(null, $"{prefix}.diagnostics.log.auto.expect.regex", $"{NotRequired(prefix)}01110", "1;0", "true;false", null, "true")
) {}
}
public class ExpectOutputTokenParser : NamedValueTokenParserList
{
public ExpectOutputTokenParser() : this("x.command")
{
}
public ExpectOutputTokenParser(string prefix) : base(
new ExpectConsoleOutputTokenParser(prefix),
new ExpectDiagnosticOutputTokenParser(prefix)
) {}
}
public class ParallelThreadTokenParser : NamedValueTokenParserList
{
public ParallelThreadTokenParser() : base(
new Any1ValueNamedValueTokenParser("--threads", "x.command.parallel.thread.count", "00011"),
new Any1ValueNamedValueTokenParser(null, "x.command.parallel.ramp.threads.every", "000110")
) {}
}
public class ParallelProcessTokenParser : NamedValueTokenParserList
{
public ParallelProcessTokenParser() : base(
new Any1ValueNamedValueTokenParser("--processes", "x.command.parallel.process.count", "00011"),
new Any1ValueNamedValueTokenParser(null, "x.command.parallel.ramp.processes.every", "000110")
) {}
}
public class ParallelCommandsTokenParser : NamedValueTokenParserList
{
public ParallelCommandsTokenParser() : base(
new ParallelThreadTokenParser(),
new ParallelProcessTokenParser()
) {}
}
public class DiagnosticLogTokenParser : NamedValueTokenParserList
{
public DiagnosticLogTokenParser() : base(
new Any1ValueNamedValueTokenParser(null, "diagnostics.config.log.file", "0011;0010")
) {}
}
}