|
26 | 26 | #include <string> |
27 | 27 | #include <string_view> |
28 | 28 | #include <type_traits> |
| 29 | +#include <utility> |
29 | 30 | #include <vector> |
30 | 31 |
|
31 | 32 | #include "absl/log/log.h" |
32 | 33 | #include "absl/strings/numbers.h" |
| 34 | +#include "absl/strings/str_cat.h" |
33 | 35 | #include "absl/strings/str_join.h" |
34 | 36 | #include "absl/strings/str_replace.h" |
35 | 37 | #include "absl/strings/str_split.h" |
@@ -202,6 +204,11 @@ std::string XmlEscape(const std::string& s) { |
202 | 204 | return absl::StrReplaceAll(s, {{"<", "<"}, {">", ">"}}); |
203 | 205 | } |
204 | 206 |
|
| 207 | +Flag WithVectorNameValueHint(Flag flag) { |
| 208 | + std::string hint = flag.ValueNameHint(); |
| 209 | + return std::move(flag).ValueNameHint(absl::StrCat(hint, "[,", hint, "...]")); |
| 210 | +} |
| 211 | + |
205 | 212 | } // namespace |
206 | 213 |
|
207 | 214 | void WriteGflagsCompatXml(const Flag& flag, std::ostream& out) { |
@@ -299,16 +306,19 @@ Flag GflagsCompatFlag(const std::string& name, bool& value) { |
299 | 306 |
|
300 | 307 | Flag GflagsCompatFlag(const std::string& name, |
301 | 308 | std::vector<std::string>& value) { |
302 | | - return GflagsCompatFlagImpl<std::string>(name, value, ""); |
| 309 | + return WithVectorNameValueHint( |
| 310 | + GflagsCompatFlagImpl<std::string>(name, value, "")); |
303 | 311 | } |
304 | 312 |
|
305 | 313 | Flag GflagsCompatFlag(const std::string& name, std::vector<unsigned>& value) { |
306 | | - return GflagsCompatFlagImpl<unsigned>(name, value, 0); |
| 314 | + return WithVectorNameValueHint( |
| 315 | + GflagsCompatFlagImpl<unsigned>(name, value, 0)); |
307 | 316 | } |
308 | 317 |
|
309 | 318 | Flag GflagsCompatFlag(const std::string& name, std::vector<bool>& value, |
310 | 319 | const bool default_value) { |
311 | | - return GflagsCompatFlagImpl(name, value, default_value); |
| 320 | + return WithVectorNameValueHint( |
| 321 | + GflagsCompatFlagImpl(name, value, default_value)); |
312 | 322 | } |
313 | 323 |
|
314 | 324 | Flag GflagsCompatFlag(const std::string& name, |
@@ -351,13 +361,13 @@ Flag GflagsCompatFlag(const std::string& name, std::optional<bool>& value, |
351 | 361 | Flag GflagsCompatFlag(const std::string& name, |
352 | 362 | std::optional<std::vector<std::string>>& value, |
353 | 363 | CoerceToNullopt opt) { |
354 | | - return GflagsCompatFlagImpl(name, value, opt); |
| 364 | + return WithVectorNameValueHint(GflagsCompatFlagImpl(name, value, opt)); |
355 | 365 | } |
356 | 366 |
|
357 | 367 | Flag GflagsCompatFlag(const std::string& name, |
358 | 368 | std::optional<std::vector<unsigned>>& value, |
359 | 369 | CoerceToNullopt opt) { |
360 | | - return GflagsCompatFlagImpl(name, value, opt); |
| 370 | + return WithVectorNameValueHint(GflagsCompatFlagImpl(name, value, opt)); |
361 | 371 | } |
362 | 372 |
|
363 | 373 | } // namespace cuttlefish |
0 commit comments