swh 0.2.1

A CLI for Switch Hosts
Documentation
use super::CommandHandler;
use crate::core::config_file::ConfigFile;
use crate::core::host_file::HostFile;
use crate::util;
use async_trait::async_trait;
use clap::Args;
use miette::Result;

pub struct ToggleCommand;

#[derive(Debug, Args)]
pub struct ToggleArgs {
    pub env: String,
}

#[async_trait]
impl CommandHandler<ToggleArgs> for ToggleCommand {
    async fn process(&self, args: &ToggleArgs) -> Result<()> {
        util::escalate()?;
        let mut hf = HostFile::load()?;
        if let Ok(mut config) = ConfigFile::load() {
            match config.toggle(&args.env) {
                Ok(()) => {
                    ConfigFile::write(&config)?;
                    hf.sync(config)?;
                }
                Err(e) => {
                    log::info!("{}", e.to_string());
                }
            }
        }
        Ok(())
    }
}