|
1 | 1 | use std::borrow::Cow;
|
2 | 2 | use std::fmt::{self, Debug, Display};
|
3 |
| -use std::io; |
4 | 3 | use std::path::{Path, PathBuf};
|
5 | 4 | use std::str::FromStr;
|
6 | 5 | use std::sync::Arc;
|
| 6 | +use std::{env, io}; |
7 | 7 |
|
8 | 8 | use anyhow::{anyhow, bail, Context, Result};
|
9 | 9 | use serde::Deserialize;
|
@@ -288,26 +288,20 @@ impl<'a> Cfg<'a> {
|
288 | 288 | let default_host_triple =
|
289 | 289 | settings_file.with(|s| Ok(get_default_host_triple(s, process)))?;
|
290 | 290 | // Environment override
|
291 |
| - let env_override = process |
292 |
| - .var("RUSTUP_TOOLCHAIN") |
293 |
| - .ok() |
294 |
| - .and_then(if_not_empty) |
| 291 | + let env_override = non_empty_env_var("RUSTUP_TOOLCHAIN", process)? |
295 | 292 | .map(ResolvableLocalToolchainName::try_from)
|
296 | 293 | .transpose()?
|
297 | 294 | .map(|t| t.resolve(&default_host_triple))
|
298 | 295 | .transpose()?;
|
299 | 296 |
|
300 |
| - let dist_root_server = match process.var("RUSTUP_DIST_SERVER") { |
301 |
| - Ok(s) if !s.is_empty() => { |
| 297 | + let dist_root_server = match non_empty_env_var("RUSTUP_DIST_SERVER", process)? { |
| 298 | + Some(s) => { |
302 | 299 | trace!("`RUSTUP_DIST_SERVER` has been set to `{s}`");
|
303 | 300 | s
|
304 | 301 | }
|
305 |
| - _ => { |
| 302 | + None => { |
306 | 303 | // For backward compatibility
|
307 |
| - process |
308 |
| - .var("RUSTUP_DIST_ROOT") |
309 |
| - .ok() |
310 |
| - .and_then(if_not_empty) |
| 304 | + non_empty_env_var("RUSTUP_DIST_ROOT", process)? |
311 | 305 | .inspect(|url| trace!("`RUSTUP_DIST_ROOT` has been set to `{url}`"))
|
312 | 306 | .map_or(Cow::Borrowed(dist::DEFAULT_DIST_ROOT), Cow::Owned)
|
313 | 307 | .as_ref()
|
@@ -1000,11 +994,12 @@ fn get_default_host_triple(s: &Settings, process: &Process) -> dist::TargetTripl
|
1000 | 994 | .unwrap_or_else(|| dist::TargetTriple::from_host_or_build(process))
|
1001 | 995 | }
|
1002 | 996 |
|
1003 |
| -fn if_not_empty<S: PartialEq<str>>(s: S) -> Option<S> { |
1004 |
| - if s == *"" { |
1005 |
| - None |
1006 |
| - } else { |
1007 |
| - Some(s) |
| 997 | +fn non_empty_env_var(name: &str, process: &Process) -> anyhow::Result<Option<String>> { |
| 998 | + match process.var(name) { |
| 999 | + Ok(s) if !s.is_empty() => Ok(Some(s)), |
| 1000 | + Ok(_) => Ok(None), |
| 1001 | + Err(env::VarError::NotPresent) => Ok(None), |
| 1002 | + Err(err) => Err(err.into()), |
1008 | 1003 | }
|
1009 | 1004 | }
|
1010 | 1005 |
|
|
0 commit comments