public void Add(string stepNameAndVersion) { var index = new[] { ':', '=' }.Select(s => stepNameAndVersion.IndexOf(s)).Where(i => i >= 0).OrderBy(i => i).FirstOrDefault(); if (index <= 0) { throw new CommandException("The package argument '" + stepNameAndVersion + "' does not use expected format of : {Step Name}:{Version}"); } var key = stepNameAndVersion.Substring(0, index); var value = (index >= stepNameAndVersion.Length - 1) ? string.Empty : stepNameAndVersion.Substring(index + 1); if (string.IsNullOrWhiteSpace(key) || string.IsNullOrWhiteSpace(value)) { throw new CommandException("The package argument '" + stepNameAndVersion + "' does not use expected format of : {Step Name}:{Version}"); } SemanticVersion version; if (!SemanticVersion.TryParse(value, out version)) { throw new CommandException("The version portion of the package constraint '" + stepNameAndVersion + "' is not a valid semantic version number."); } Add(key, value); }
public void Add(string stepNameAndVersion) { var split = stepNameAndVersion.Split(Delimiters); if (split.Length < 2) { throw new CommandException("The package argument '" + stepNameAndVersion + "' does not use expected format of : {Step Name}:{Version}"); } var stepOrPackageId = split[0]; var packageReferenceName = split.Length > 2 ? split[1] : null; var version = split.Length > 2 ? split[2] : split[1]; if (string.IsNullOrWhiteSpace(stepOrPackageId) || string.IsNullOrWhiteSpace(version)) { throw new CommandException("The package argument '" + stepNameAndVersion + "' does not use expected format of : {Step Name}:{Version}"); } if (!SemanticVersion.TryParse(version, out var parsedVersion)) { throw new CommandException("The version portion of the package constraint '" + stepNameAndVersion + "' is not a valid semantic version number."); } Add(stepOrPackageId, packageReferenceName, version); }