hyper-jump 0.11.0

A generalist all-in-one command-line version manager toolset for a more efficient development workflow.
use crate::adapters::fs::TokioFs;
use crate::adapters::output::StdoutOutput;
use crate::app::list::list_installed;
use crate::domain::package::Package;

#[derive(clap::Parser)]
pub struct Args {
    pub package: String,
}

pub async fn run(
    args: Args,
    ctx: &crate::Context,
    _client: Option<&reqwest::Client>,
) -> miette::Result<()> {
    let spec = ctx.packages.resolve(&args.package).map_err(|e| miette::miette!(e))?;
    let output = StdoutOutput;
    let fs = TokioFs;
    let platform = crate::adapters::platform::StdPlatform;
    let paths = crate::adapters::path::FsPaths::new(ctx.dirs.root_dir.clone());
    let used_store = crate::adapters::used_store::UsedFileStore::new(paths.clone());
    let package = Package::from_spec(spec, &platform).map_err(|e| miette::miette!(e))?;
    list_installed(
        package,
        ctx.output_format.clone(),
        &output,
        &paths,
        &used_store,
        &fs,
    )
    .await
    .map_err(|e| miette::miette!(e))
}