Rollup merge of #118606 - long-long-float:x-do-not-quit-when-x-prints-settings-json, r=onur-ozkan
Fix `x` not to quit after `x` prints `settings.json` I fixed the `x` not to quit after the `x` prints `.vscode/settings.json`. The command `x setup` ask as following: ``` x.py can automatically install the recommended `.vscode/settings.json` file for rustc development Would you like to create/update `settings.json`, or only print suggested settings?: [y/p/N] ``` When user types `p`, the `x` prints the contents and quit the program. It is a hassle to start the command again, so I fixed the `x` to ask what to do again.
This commit is contained in:
commit
a260acc668
@ -549,12 +549,13 @@ fn run(self, builder: &Builder<'_>) -> Self::Output {
|
|||||||
if config.dry_run() {
|
if config.dry_run() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
t!(create_vscode_settings_maybe(&config));
|
while !t!(create_vscode_settings_maybe(&config)) {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Create a `.vscode/settings.json` file for rustc development, or just print it
|
/// Create a `.vscode/settings.json` file for rustc development, or just print it
|
||||||
fn create_vscode_settings_maybe(config: &Config) -> io::Result<()> {
|
/// If this method should be re-called, it returns `false`.
|
||||||
|
fn create_vscode_settings_maybe(config: &Config) -> io::Result<bool> {
|
||||||
let (current_hash, historical_hashes) = SETTINGS_HASHES.split_last().unwrap();
|
let (current_hash, historical_hashes) = SETTINGS_HASHES.split_last().unwrap();
|
||||||
let vscode_settings = config.src.join(".vscode").join("settings.json");
|
let vscode_settings = config.src.join(".vscode").join("settings.json");
|
||||||
// If None, no settings.json exists
|
// If None, no settings.json exists
|
||||||
@ -567,7 +568,7 @@ fn create_vscode_settings_maybe(config: &Config) -> io::Result<()> {
|
|||||||
hasher.update(¤t);
|
hasher.update(¤t);
|
||||||
let hash = hex::encode(hasher.finalize().as_slice());
|
let hash = hex::encode(hasher.finalize().as_slice());
|
||||||
if hash == *current_hash {
|
if hash == *current_hash {
|
||||||
return Ok(());
|
return Ok(true);
|
||||||
} else if historical_hashes.contains(&hash.as_str()) {
|
} else if historical_hashes.contains(&hash.as_str()) {
|
||||||
mismatched_settings = Some(true);
|
mismatched_settings = Some(true);
|
||||||
} else {
|
} else {
|
||||||
@ -587,13 +588,13 @@ fn create_vscode_settings_maybe(config: &Config) -> io::Result<()> {
|
|||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
let should_create = match prompt_user(
|
let should_create = match prompt_user(
|
||||||
"Would you like to create/update `settings.json`, or only print suggested settings?: [y/p/N]",
|
"Would you like to create/update settings.json? (Press 'p' to preview values): [y/N]",
|
||||||
)? {
|
)? {
|
||||||
Some(PromptResult::Yes) => true,
|
Some(PromptResult::Yes) => true,
|
||||||
Some(PromptResult::Print) => false,
|
Some(PromptResult::Print) => false,
|
||||||
_ => {
|
_ => {
|
||||||
println!("Ok, skipping settings!");
|
println!("Ok, skipping settings!");
|
||||||
return Ok(());
|
return Ok(true);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
if should_create {
|
if should_create {
|
||||||
@ -620,5 +621,5 @@ fn create_vscode_settings_maybe(config: &Config) -> io::Result<()> {
|
|||||||
} else {
|
} else {
|
||||||
println!("\n{RUST_ANALYZER_SETTINGS}");
|
println!("\n{RUST_ANALYZER_SETTINGS}");
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(should_create)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user