huber 1.0.11

Huber, simplify GitHub package management
Documentation
use async_trait::async_trait;
use clap::Args;
use log::info;
use simpledi_rs::di::{DIContainer, DIContainerTrait};

use crate::cmd::CommandTrait;
use crate::lock_huber_ops;
use crate::model::config::Config;
use crate::service::update::{HuberUpdateService, UpdateTrait};

#[derive(Args)]
pub struct ResetArgs {}

#[async_trait]
impl CommandTrait for ResetArgs {
    async fn run(&self, config: &Config, container: &DIContainer) -> anyhow::Result<()> {
        lock_huber_ops!(config);

        let update_service = container.get::<HuberUpdateService>().unwrap();

        info!(
            "Resetting Huber by removing created caches, downloaded files and installed packages"
        );
        update_service.reset()?;
        info!("Huber reset");

        Ok(())
    }
}