From 3afc004845b36d18009718fe8d5179adfa1ca2ea Mon Sep 17 00:00:00 2001 From: Antoine Martin Date: Mon, 5 Oct 2020 17:55:14 +0200 Subject: [PATCH] Show available profiles on error --- src/bootstrap/flags.rs | 9 ++++++++- src/bootstrap/setup.rs | 4 ++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/bootstrap/flags.rs b/src/bootstrap/flags.rs index 2c1e361fae4c..d1f256d6dd09 100644 --- a/src/bootstrap/flags.rs +++ b/src/bootstrap/flags.rs @@ -542,7 +542,14 @@ Arguments: |path| format!("{} is not a valid UTF8 string", path.to_string_lossy()) )); - profile_string.parse().expect("unknown profile") + profile_string.parse().unwrap_or_else(|_| { + eprintln!("error: unknown profile {}", profile_string); + eprintln!("help: the available profiles are:"); + for choice in Profile::all() { + eprintln!("- {}", choice); + } + std::process::exit(1); + }) } else { t!(crate::setup::interactive_path()) }; diff --git a/src/bootstrap/setup.rs b/src/bootstrap/setup.rs index cbbb406cd167..0d2945c3c396 100644 --- a/src/bootstrap/setup.rs +++ b/src/bootstrap/setup.rs @@ -18,6 +18,10 @@ impl Profile { fn include_path(&self, src_path: &Path) -> PathBuf { PathBuf::from(format!("{}/src/bootstrap/defaults/config.{}.toml", src_path.display(), self)) } + + pub fn all() -> impl Iterator { + [Profile::Compiler, Profile::Codegen, Profile::Library, Profile::User].iter().copied() + } } #[derive(Debug)]