Reviewed-on: #2 Co-authored-by: Julien Fastré <julien.fastre@champs-libres.coop> Co-committed-by: Julien Fastré <julien.fastre@champs-libres.coop>
31 lines
1.0 KiB
Rust
31 lines
1.0 KiB
Rust
use crate::cli::Issue2Work;
|
|
use crate::config::Config;
|
|
use crate::error::GeneralError;
|
|
use crate::gitea::action::GiteaAction;
|
|
use crate::gitlab::action::GitlabAction;
|
|
use crate::planning::Issue2WorkActionTrait;
|
|
use url::Url;
|
|
|
|
struct App {
|
|
gitlab_issue2work_action: GitlabAction,
|
|
gitea_issue2work_action: GiteaAction,
|
|
}
|
|
|
|
pub(crate) async fn issue2work(config: Config, args: &Issue2Work) -> Result<(), GeneralError> {
|
|
let url = Url::parse(&*args.issue_url).expect("issue_url is not valid");
|
|
let app = App {
|
|
gitlab_issue2work_action: GitlabAction {},
|
|
gitea_issue2work_action: GiteaAction {},
|
|
};
|
|
|
|
if app.gitlab_issue2work_action.supports(&url, &config, args) {
|
|
app.gitlab_issue2work_action.run(&url, &config, args).await
|
|
} else if app.gitea_issue2work_action.supports(&url, &config, args) {
|
|
app.gitea_issue2work_action.run(&url, &config, args).await
|
|
} else {
|
|
Err(GeneralError {
|
|
description: format!("This action is not supported for this url: {}", url),
|
|
})
|
|
}
|
|
}
|