Gate and rename binary, use it if it's in the sysroot

This commit is contained in:
Amos Wenger 2022-07-25 16:22:39 +02:00
parent dadb83282d
commit 74a2fad5e6
4 changed files with 22 additions and 1 deletions

View file

@ -86,6 +86,7 @@ fn mk_child(
) -> io::Result<Child> {
Command::new(path.as_os_str())
.args(args)
.env("RUST_ANALYZER_INTERNALS_DO_NOT_USE", "this is unstable")
.stdin(Stdio::piped())
.stdout(Stdio::piped())
.stderr(Stdio::inherit())

View file

@ -13,5 +13,5 @@ proc-macro-srv = { version = "0.0.0", path = "../proc-macro-srv" }
sysroot-abi = ["proc-macro-srv/sysroot-abi"]
[[bin]]
name = "proc-macro-srv"
name = "rust-analyzer-proc-macro-srv"
path = "src/main.rs"

View file

@ -3,5 +3,17 @@
use proc_macro_srv::cli;
fn main() -> std::io::Result<()> {
let v = std::env::var("RUST_ANALYZER_INTERNALS_DO_NOT_USE");
match v.as_deref() {
Ok("this is unstable") => {
// very well, if you must
}
_ => {
eprintln!("If you're rust-analyzer, you can use this tool by exporting RUST_ANALYZER_INTERNALS_DO_NOT_USE='this is unstable'.");
eprintln!("If not, you probably shouldn't use this tool. But do what you want: I'm an error message, not a cop.");
std::process::exit(122);
}
}
cli::run()
}

View file

@ -309,7 +309,9 @@ impl GlobalState {
.workspaces
.iter()
.map(|ws| {
let mut args = args.clone();
let mut path = path.clone();
if let ProjectWorkspace::Cargo { sysroot, .. } = ws {
tracing::info!("Found a cargo workspace...");
if let Some(sysroot) = sysroot.as_ref() {
@ -324,6 +326,7 @@ impl GlobalState {
server_path.display()
);
path = server_path;
args = vec![];
} else {
tracing::info!(
"And the server does not exist at {}",
@ -333,6 +336,11 @@ impl GlobalState {
}
}
tracing::info!(
"Using proc-macro server at {} with args {:?}",
path.display(),
args
);
ProcMacroServer::spawn(path.clone(), args.clone()).map_err(|err| {
let error = format!(
"Failed to run proc_macro_srv from path {}, error: {:?}",