Skip to content

Commit c32ee7f

Browse files
authored
Merge pull request #4 from sdairs/issue-3-use-keywords
Support keywords in chv use
2 parents 3eea171 + 1c841ab commit c32ee7f

2 files changed

Lines changed: 17 additions & 3 deletions

File tree

README.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,10 @@ chv list # Installed versions
3434
chv list --available # Available for download
3535

3636
# Manage default version
37-
chv use 25.12.5.44 # Set default
37+
chv use 25.12.5.44 # Exact version
38+
chv use stable # Latest stable (installs if needed)
39+
chv use lts # Latest LTS (installs if needed)
40+
chv use 25.12 # Latest 25.12.x.x (installs if needed)
3841
chv which # Show current default
3942

4043
# Remove a version

src/main.rs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ async fn run(cmd: Commands) -> Result<()> {
3737
list_installed()
3838
}
3939
}
40-
Commands::Use { version } => use_version(&version),
40+
Commands::Use { version } => use_version(&version).await,
4141
Commands::Remove { version } => remove(&version),
4242
Commands::Which => which(),
4343
Commands::Init => {
@@ -107,7 +107,18 @@ async fn list_available() -> Result<()> {
107107
Ok(())
108108
}
109109

110-
fn use_version(version: &str) -> Result<()> {
110+
async fn use_version(version_spec: &str) -> Result<()> {
111+
println!("Resolving version {}...", version_spec);
112+
let entry = version_manager::resolve_version(version_spec).await?;
113+
let version = &entry.version;
114+
115+
// Install if not already installed
116+
let installed = version_manager::list_installed_versions()?;
117+
if !installed.contains(version) {
118+
println!("Version {} not installed, installing...", version);
119+
version_manager::install_version(version, &entry.channel).await?;
120+
}
121+
111122
version_manager::set_default_version(version)?;
112123
println!("Default version set to {}", version);
113124
Ok(())

0 commit comments

Comments
 (0)