From 4f6f6d5d6a2ca04eaf525fbfb6f965e9200bae91 Mon Sep 17 00:00:00 2001 From: bigfoot547 Date: Fri, 7 Feb 2025 01:41:37 -0600 Subject: more work on cli --- ozone-cli/Cargo.toml | 1 + ozone-cli/src/main.rs | 31 ++++++++++++++++++++++++++----- 2 files changed, 27 insertions(+), 5 deletions(-) (limited to 'ozone-cli') diff --git a/ozone-cli/Cargo.toml b/ozone-cli/Cargo.toml index dbbda5d..7f1aad2 100644 --- a/ozone-cli/Cargo.toml +++ b/ozone-cli/Cargo.toml @@ -9,3 +9,4 @@ tokio = { version = "1.43.0", features = ["rt", "rt-multi-thread", "macros"] } simple_logger = { version = "5.0.0", features = ["colors"] } log = "0.4.25" clap = { version = "4.5.27", features = ["derive", "cargo"] } +clap_complete = { version = "4.5.44", features = ["unstable-dynamic"] } diff --git a/ozone-cli/src/main.rs b/ozone-cli/src/main.rs index 4b04e48..d18e9b8 100644 --- a/ozone-cli/src/main.rs +++ b/ozone-cli/src/main.rs @@ -2,7 +2,7 @@ mod cli; use std::error::Error; use std::process::ExitCode; -use log::{error, info}; +use log::{error, info, trace}; use clap::Parser; use ozone::launcher::{Launcher, Settings}; @@ -14,14 +14,32 @@ async fn main_inner(cli: Cli) -> Result> { return Ok(ExitCode::FAILURE); // we print our own error message }; - info!("Sensible home could be {home:?}"); + trace!("Sensible home could be {home:?}"); let mut settings = Settings::load(home.join("ozone.json")).await?; match &cli.subcmd { RootCommand::Profile(p) => match p.command() { ProfileCommand::List => { + let mut first = true; + + if settings.get_profiles().is_empty() { + eprintln!("There are no profiles. Create one with `profile create '."); + return Ok(ExitCode::SUCCESS); + } + for (name, profile) in settings.get_profiles().iter() { - println!("{name}: {profile:#?}"); + if !first { + println!(); + } + + first = false; + + let sel = if settings.get_selected_profile_name().is_some_and(|n| n == name) { " (selected)" } else { "" }; + let exists = if settings.get_instances().contains_key(profile.get_instance_name()) { "" } else { " (missing!)" }; + + println!("Profile {name}:{sel}"); + println!(" Version: {}", profile.get_version()); + println!(" Instance: {}{}", profile.get_instance_name(), exists); } }, ProfileCommand::Create(args) => { @@ -43,7 +61,10 @@ async fn main_inner(cli: Cli) -> Result> { } // creating a new profile from scratch - + todo!() + }, + ProfileCommand::Select(args) => { + } _ => todo!() }, @@ -73,7 +94,7 @@ async fn main_inner(cli: Cli) -> Result> { async fn main() -> ExitCode { simple_logger::SimpleLogger::new().env().init().unwrap(); - let arg = dbg!(Cli::parse()); + let arg = Cli::parse(); main_inner(arg).await.unwrap_or_else(|e| { error!("Launcher initialization error:"); -- cgit v1.2.3-70-g09d2