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(())
}