Rollup merge of #70698 - nikomatsakis:x-py-json-output, r=Mark-Simulacrum
bootstrap: add `--json-output` for rust-analyzer Motivation is that this allows us to customize rust-analyzer's "cargo watch" integration to run x.py. You simply have to set the command to run to be `x.py --json-output` r? @Mark-Simulacrum -- feel free to make changes, this is quick and dirty for sure
This commit is contained in:
commit
17f204feee
3 changed files with 10 additions and 1 deletions
|
@ -911,7 +911,11 @@ pub fn stream_cargo(
|
||||||
}
|
}
|
||||||
// Instruct Cargo to give us json messages on stdout, critically leaving
|
// Instruct Cargo to give us json messages on stdout, critically leaving
|
||||||
// stderr as piped so we can get those pretty colors.
|
// stderr as piped so we can get those pretty colors.
|
||||||
let mut message_format = String::from("json-render-diagnostics");
|
let mut message_format = if builder.config.json_output {
|
||||||
|
String::from("json")
|
||||||
|
} else {
|
||||||
|
String::from("json-render-diagnostics")
|
||||||
|
};
|
||||||
if let Some(s) = &builder.config.rustc_error_format {
|
if let Some(s) = &builder.config.rustc_error_format {
|
||||||
message_format.push_str(",json-diagnostic-");
|
message_format.push_str(",json-diagnostic-");
|
||||||
message_format.push_str(s);
|
message_format.push_str(s);
|
||||||
|
|
|
@ -48,6 +48,7 @@ pub struct Config {
|
||||||
pub ignore_git: bool,
|
pub ignore_git: bool,
|
||||||
pub exclude: Vec<PathBuf>,
|
pub exclude: Vec<PathBuf>,
|
||||||
pub rustc_error_format: Option<String>,
|
pub rustc_error_format: Option<String>,
|
||||||
|
pub json_output: bool,
|
||||||
pub test_compare_mode: bool,
|
pub test_compare_mode: bool,
|
||||||
pub llvm_libunwind: bool,
|
pub llvm_libunwind: bool,
|
||||||
|
|
||||||
|
@ -415,6 +416,7 @@ impl Config {
|
||||||
let mut config = Config::default_opts();
|
let mut config = Config::default_opts();
|
||||||
config.exclude = flags.exclude;
|
config.exclude = flags.exclude;
|
||||||
config.rustc_error_format = flags.rustc_error_format;
|
config.rustc_error_format = flags.rustc_error_format;
|
||||||
|
config.json_output = flags.json_output;
|
||||||
config.on_fail = flags.on_fail;
|
config.on_fail = flags.on_fail;
|
||||||
config.stage = flags.stage;
|
config.stage = flags.stage;
|
||||||
config.jobs = flags.jobs.map(threads_from_config);
|
config.jobs = flags.jobs.map(threads_from_config);
|
||||||
|
|
|
@ -31,6 +31,7 @@ pub struct Flags {
|
||||||
pub incremental: bool,
|
pub incremental: bool,
|
||||||
pub exclude: Vec<PathBuf>,
|
pub exclude: Vec<PathBuf>,
|
||||||
pub rustc_error_format: Option<String>,
|
pub rustc_error_format: Option<String>,
|
||||||
|
pub json_output: bool,
|
||||||
pub dry_run: bool,
|
pub dry_run: bool,
|
||||||
|
|
||||||
// This overrides the deny-warnings configuration option,
|
// This overrides the deny-warnings configuration option,
|
||||||
|
@ -156,6 +157,7 @@ To learn more about a subcommand, run `./x.py <subcommand> -h`",
|
||||||
"VALUE",
|
"VALUE",
|
||||||
);
|
);
|
||||||
opts.optopt("", "error-format", "rustc error format", "FORMAT");
|
opts.optopt("", "error-format", "rustc error format", "FORMAT");
|
||||||
|
opts.optflag("", "json-output", "use message-format=json");
|
||||||
opts.optopt(
|
opts.optopt(
|
||||||
"",
|
"",
|
||||||
"llvm-skip-rebuild",
|
"llvm-skip-rebuild",
|
||||||
|
@ -503,6 +505,7 @@ Arguments:
|
||||||
dry_run: matches.opt_present("dry-run"),
|
dry_run: matches.opt_present("dry-run"),
|
||||||
on_fail: matches.opt_str("on-fail"),
|
on_fail: matches.opt_str("on-fail"),
|
||||||
rustc_error_format: matches.opt_str("error-format"),
|
rustc_error_format: matches.opt_str("error-format"),
|
||||||
|
json_output: matches.opt_present("json-output"),
|
||||||
keep_stage: matches
|
keep_stage: matches
|
||||||
.opt_strs("keep-stage")
|
.opt_strs("keep-stage")
|
||||||
.into_iter()
|
.into_iter()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue