[gn] Updating args --list to make the comment padding optional Updating the comment to not be prefixed with three spaces for json output and removing extraneous output. Change-Id: Iaeee0809ce3cff050a1d3eec5f34f885677802a8 Reviewed-on: https://chromium-review.googlesource.com/1000392 Reviewed-by: Dirk Pranke <dpranke@chromium.org> Commit-Queue: Julie Hockett <juliehockett@google.com> Cr-Original-Commit-Position: refs/heads/master@{#548956} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: 12bd7ed6ad7773920fe303d54ef1be9b4798ccb1
diff --git a/tools/gn/command_args.cc b/tools/gn/command_args.cc index 237aa0d..9fbf67b 100644 --- a/tools/gn/command_args.cc +++ b/tools/gn/command_args.cc
@@ -67,19 +67,22 @@ // Assumes DoesLineBeginWithComment(), this strips the # character from the // beginning and normalizes preceding whitespace. -std::string StripHashFromLine(const base::StringPiece& line) { +std::string StripHashFromLine(const base::StringPiece& line, bool pad) { // Replace the # sign and everything before it with 3 spaces, so that a // normal comment that has a space after the # will be indented 4 spaces // (which makes our formatting come out nicely). If the comment is indented // from there, we want to preserve that indenting. - return " " + line.substr(line.find('#') + 1).as_string(); + if (pad) + return " " + line.substr(line.find('#') + 1).as_string(); + return line.substr(line.find('#') + 1).as_string(); } // Tries to find the comment before the setting of the given value. void GetContextForValue(const Value& value, std::string* location_str, int* line_no, - std::string* comment) { + std::string* comment, + bool pad_comment=true) { Location location = value.origin()->GetRange().begin(); const InputFile* file = location.file(); if (!file) @@ -101,7 +104,7 @@ if (!DoesLineBeginWithComment(line)) break; - comment->insert(0, StripHashFromLine(line) + "\n"); + comment->insert(0, StripHashFromLine(line, pad_comment) + "\n"); line_off = previous_line_offset; } } @@ -171,7 +174,8 @@ if (arg.override_value.origin() && !short_only) { int line_no; std::string location, comment; - GetContextForValue(arg.override_value, &location, &line_no, &comment); + GetContextForValue(arg.override_value, &location, &line_no, &comment, + /*pad_comment=*/false); // Omit file and line if set with --args (i.e. no file) if (!location.empty()) { override_dict.SetKey("file", base::Value(location)); @@ -188,7 +192,8 @@ if (arg.default_value.origin() && !short_only) { int line_no; std::string location; - GetContextForValue(arg.default_value, &location, &line_no, &comment); + GetContextForValue(arg.default_value, &location, &line_no, &comment, + /*pad_comment=*/false); // Only emit file and line if the value is overridden. if (arg.has_override) { default_dict.SetKey("file", base::Value(location)); @@ -198,11 +203,6 @@ dict.SetKey("default", std::move(default_dict)); if (!comment.empty() && !short_only) dict.SetKey("comment", base::Value(comment)); - - std::string s; - base::JSONWriter::WriteWithOptions( - dict, base::JSONWriter::OPTIONS_PRETTY_PRINT, &s); - OutputString(s); } int ListArgs(const std::string& build_dir) {