diff --git a/src/commands/install.rs b/src/commands/install.rs index dc13e02..a0539ed 100644 --- a/src/commands/install.rs +++ b/src/commands/install.rs @@ -156,29 +156,31 @@ impl Command for Install { enable_corepack(&version, config)?; } - if let Some(tagged_alias) = match ¤t_version { - UserVersion::Full(Version::Latest) => Some(Version::Latest), - UserVersion::Full(Version::Lts(lts_type)) => Some(Version::Lts(lts_type.clone())), - _ => None, - } { - let alias_name = tagged_alias.v_str(); - debug!( - "Tagging {} as alias for {}", - alias_name.cyan(), - version.v_str().cyan() - ); - create_alias(config, &alias_name, &version)?; - } - if !config.default_version_dir().exists() { debug!("Tagging {} as the default version", version.v_str().cyan()); create_alias(config, "default", &version)?; } + if let Some(tagged_alias) = current_version.inferred_alias() { + tag_alias(config, &version, &tagged_alias)?; + } + Ok(()) } } +fn tag_alias(config: &FnmConfig, matched_version: &Version, alias: &Version) -> Result<(), Error> { + let alias_name = alias.v_str(); + debug!( + "Tagging {} as alias for {}", + alias_name.cyan(), + matched_version.v_str().cyan() + ); + create_alias(config, &alias_name, matched_version)?; + + Ok(()) +} + fn enable_corepack(version: &Version, config: &FnmConfig) -> Result<(), Error> { let corepack_path = version.installation_path(config); let corepack_path = if cfg!(windows) { diff --git a/src/user_version.rs b/src/user_version.rs index 52c69a1..eb43d71 100644 --- a/src/user_version.rs +++ b/src/user_version.rs @@ -50,6 +50,15 @@ impl UserVersion { } } } + + /// The inferred alias for the user version, if it exists. + pub fn inferred_alias(&self) -> Option { + match self { + UserVersion::Full(Version::Latest) => Some(Version::Latest), + UserVersion::Full(Version::Lts(lts_type)) => Some(Version::Lts(lts_type.clone())), + _ => None, + } + } } fn next_of<'a, T: FromStr, It: Iterator>(i: &mut It) -> Option {