git-next/crates/forge/src/lib.rs

33 lines
923 B
Rust
Raw Normal View History

//
2024-05-23 19:36:05 +01:00
use git_next_forge_forgejo as forgejo;
use git_next_forge_github as github;
use git_next_git as git;
use kxio::network::Network;
#[derive(Clone, Debug)]
pub enum Forge {
Mock,
#[cfg(feature = "forgejo")]
ForgeJo(git_next_forge_forgejo::ForgeJo),
#[cfg(feature = "github")]
Github(git_next_forge_github::Github),
}
impl Forge {
pub fn create(repo_details: git::RepoDetails, net: Network) -> Box<dyn git::ForgeLike> {
2024-06-01 12:03:30 +01:00
match repo_details.forge.forge_type() {
#[cfg(feature = "forgejo")]
git_next_config::ForgeType::ForgeJo => {
Box::new(forgejo::ForgeJo::new(repo_details, net))
2024-06-01 12:03:30 +01:00
}
#[cfg(feature = "github")]
git_next_config::ForgeType::GitHub => Box::new(github::Github::new(repo_details, net)),
git_next_config::ForgeType::MockForge => unreachable!(),
2024-06-01 12:03:30 +01:00
}
}
}
#[cfg(test)]
pub mod tests;