From dba2b9f8e02c9ddd4f52add4e46b2abf0b712133 Mon Sep 17 00:00:00 2001 From: Gal Schlezinger Date: Mon, 1 Mar 2021 13:32:11 +0200 Subject: [PATCH] Allow `fnm use` to use a file path (#403) --- src/commands/exec.rs | 9 ++++----- src/commands/use.rs | 12 ++++++------ 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/commands/exec.rs b/src/commands/exec.rs index cc4a90c..a19b71d 100644 --- a/src/commands/exec.rs +++ b/src/commands/exec.rs @@ -1,12 +1,11 @@ use super::command::Command as Cmd; -use crate::choose_version_for_user_input::Error as UserInputError; +use crate::choose_version_for_user_input::{ + choose_version_for_user_input, Error as UserInputError, +}; use crate::config::FnmConfig; use crate::outln; use crate::user_version::UserVersion; -use crate::{ - choose_version_for_user_input::choose_version_for_user_input, - user_version_reader::UserVersionReader, -}; +use crate::user_version_reader::UserVersionReader; use colored::Colorize; use snafu::{OptionExt, ResultExt, Snafu}; use std::process::{Command, Stdio}; diff --git a/src/commands/use.rs b/src/commands/use.rs index ea483e9..4c3929b 100644 --- a/src/commands/use.rs +++ b/src/commands/use.rs @@ -1,20 +1,19 @@ use super::command::Command; use super::install::Install; -use crate::config::FnmConfig; use crate::fs; use crate::installed_versions; use crate::outln; use crate::system_version; use crate::user_version::UserVersion; use crate::version::Version; -use crate::version_files::get_user_version_for_directory; +use crate::{config::FnmConfig, user_version_reader::UserVersionReader}; use colored::Colorize; use snafu::{ensure, OptionExt, ResultExt, Snafu}; use structopt::StructOpt; #[derive(StructOpt, Debug)] pub struct Use { - version: Option, + version: Option, /// Install the version if it isn't installed yet #[structopt(long)] install_if_missing: bool, @@ -31,10 +30,11 @@ impl Command for Use { installed_versions::list(config.installations_dir()).context(VersionListingError)?; let requested_version = self .version - .or_else(|| { + .unwrap_or_else(|| { let current_dir = std::env::current_dir().unwrap(); - get_user_version_for_directory(current_dir) + UserVersionReader::Path(current_dir) }) + .to_user_version() .context(CantInferVersion)?; let version_path = if let UserVersion::Full(Version::Bypassed) = requested_version { @@ -76,7 +76,7 @@ impl Command for Use { .context(InstallError)?; Self { - version: Some(requested_version), + version: Some(UserVersionReader::Direct(requested_version)), install_if_missing: self.install_if_missing, } .apply(config)?;