git-next/crates/forge/src/lib.rs
Paul Campbell ab728c7364
All checks were successful
Rust / build (push) Successful in 2m54s
ci/woodpecker/push/cron-docker-builder Pipeline was successful
ci/woodpecker/push/tag-created Pipeline was successful
ci/woodpecker/push/push-next Pipeline was successful
refactor: merge config crate into core crate
2024-07-25 21:08:16 +01:00

29 lines
825 B
Rust

//
use git_next_core::ForgeType;
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> {
match repo_details.forge.forge_type() {
#[cfg(feature = "forgejo")]
ForgeType::ForgeJo => Box::new(git_next_forge_forgejo::ForgeJo::new(repo_details, net)),
#[cfg(feature = "github")]
ForgeType::GitHub => Box::new(git_next_forge_github::Github::new(repo_details, net)),
ForgeType::MockForge => unreachable!(),
}
}
}
#[cfg(test)]
pub mod tests;