gitbackup 0.2.6

Backup all your git repositories with a single command
use crate::providers;
use crate::types::{AppConfig, EnabledProvider};
use anyhow::{Context, Result};
use std::fs;

pub fn run() -> Result<()> {
    let config = AppConfig::get_config().context("Unable to retrieve config")?;
    let backup_path = config.get_backup_path()?;

    if !backup_path.exists() {
        fs::create_dir_all(&backup_path).context("Unable to create backup directory")?;
    }

    for p in &config.providers {
        match p.provider {
            EnabledProvider::GitHub => {
                providers::github::run(&backup_path, p)?;
            }
            EnabledProvider::Gitea | EnabledProvider::Forgejo => {
                providers::gitea::run(&backup_path, p)?;
            }
            EnabledProvider::GitLab => providers::gitlab::run(&backup_path, p)?,
        };
    }

    Ok(())
}