private void SetPropertyValue(PropertyInfo prop, CommandLineParameterAttribute attr, ref string[] parameters) { for (var i = 0; i < parameters.Length; i++) { string param = parameters[i]; if (string.IsNullOrWhiteSpace(param)) { continue; } if (IsParameter(param, out string designator)) { param = param.Substring(designator.Length); } string nextValue = ""; var indexOfEquals = param.IndexOf('='); if (indexOfEquals > 0) { nextValue = param.Substring(indexOfEquals + 1); param = param.Substring(0, indexOfEquals); } var names = attr.Name.Split('|'); bool matches = false; foreach (var name in names) { if (string.Equals(name, param, attr.EnforceCasing ? StringComparison.Ordinal : StringComparison.InvariantCultureIgnoreCase)) { matches = true; break; } } if (matches) { parameters[i] = null; if (i < parameters.Length - 1) { i++; if (string.IsNullOrWhiteSpace(nextValue)) { nextValue = parameters[i]; } } if (SetValue(this, prop, param, nextValue)) { parameters[i] = null; } } } }
private void WriteProperty(PropertyInfo prop, CommandLineParameterAttribute attr) { var names = attr.Name.Split('|'); var hasValue = prop.PropertyType != typeof(bool) && prop.PropertyType != typeof(bool?); for (var i = 0; i < names.Length; i++) { var name = names[i]; if (!attr.Required) { sb.AppendFormat("["); } string value; if (name.Length > 1) { if (hasValue) { value = $"--{name}=value"; } else { value = $"--{name}"; } } else { if (hasValue) { value = $"-{name} value"; } else { value = $"-{name}"; } } sb.Append(value); if (!attr.Required) { sb.AppendFormat("]"); } sb.AppendFormat(" "); } this.IO.Writer.Write(sb.ToString()); sb.Clear(); }
private void WritePropertyDescription(Type propertyType, CommandLineParameterAttribute attr, string commandPrefix, int padding) { var names = attr.Name.Split('|'); var hasValue = propertyType != typeof(bool) && propertyType != typeof(bool?); bool last = false; var sbName = new StringBuilder(); for (var i = 0; i < names.Length; i++) { var name = names[i]; if (i == names.Length - 1) { last = true; } if (name.Length > 1) { if (hasValue) { sbName.Append($"--{name}=value"); } else { sbName.Append($"--{name}"); } } else { if (hasValue) { sbName.Append($"-{name} value"); } else { sbName.Append($"-{name}"); } } if (!last && names.Length > 1) { sbName.Append(", "); } } var sbNameVal = sbName.ToString(); sb.Append(sbNameVal.PadLeft(sbNameVal.Length + 3).PadRight(padding)); var descName = "CommandLine_" + commandPrefix + "_" + attr.Description; var desc = SR.Resource(descName); if (string.Equals(descName, desc, StringComparison.InvariantCultureIgnoreCase)) { sb.Append(attr.Description); } else { sb.Append(desc); } this.IO.Writer.Write(sb.ToString()); sb.Clear(); }