mirror of
https://github.com/ALEZ-DEV/Babylonia-terminal.git
synced 2026-03-22 06:08:52 +00:00
44 lines
1.1 KiB
Rust
44 lines
1.1 KiB
Rust
use babylonia_terminal_sdk::utils::github_requester::GithubRequester;
|
|
use dialoguer::{theme::ColorfulTheme, Select};
|
|
|
|
pub fn use_latest(prompt: &str) -> bool {
|
|
let choices = ["Install latest", "Choose specific version"];
|
|
|
|
let index = Select::with_theme(&ColorfulTheme::default())
|
|
.with_prompt(prompt)
|
|
.default(0)
|
|
.items(&choices)
|
|
.interact()
|
|
.unwrap();
|
|
|
|
if choices[index] == "Install latest" {
|
|
true
|
|
} else {
|
|
false
|
|
}
|
|
}
|
|
|
|
struct Chooser;
|
|
impl GithubRequester for Chooser {
|
|
fn set_github_release_index(&mut self, _: usize) {}
|
|
}
|
|
|
|
pub async fn choose_release_version(
|
|
github_username: &str,
|
|
repo_name: &str,
|
|
prompt: &str,
|
|
) -> anyhow::Result<usize> {
|
|
let releases = Chooser::get_github_releases(github_username, repo_name).await?;
|
|
let releases_names: Vec<String> = releases.iter().map(|r| r.tag_name.to_owned()).collect();
|
|
|
|
let index = Select::with_theme(&ColorfulTheme::default())
|
|
.with_prompt(prompt)
|
|
.default(0)
|
|
.items(&releases_names)
|
|
.max_length(5)
|
|
.interact()
|
|
.unwrap();
|
|
|
|
Ok(index)
|
|
}
|