pub fn require_profile(
base: &Path,
game: &str,
name: &str,
) -> Result<PathBuf, BadProfile>Expand description
The directory of an existing profile, classifying why not when there is none.
The single place that decides “is this a usable profile name”: both
use_profile and crate::profile::target::InstallTarget::resolve go
through it, so they cannot drift apart, and a caller that wants to word the
refusal itself gets the reason rather than a sentence.