use super::CosmicusServer;
use crate::types::{CancelWorkflowRun, Id, RunWorkflowConfig, RunWorkflowConfigBuilder};
use coodev_runner::{GithubAuthorization, Runner};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum RunnerCommand {
Run(RunWorkflowConfig),
Cancel(CancelWorkflowRun),
}
impl RunWorkflowConfigBuilder {
pub async fn exec(&self, server: &CosmicusServer) -> anyhow::Result<()> {
let options = self.build()?;
server.run_workflow(options).await?;
Ok(())
}
}
pub fn run_workflow(id: impl Into<Id>) -> RunWorkflowConfigBuilder {
let builder = RunWorkflowConfigBuilder {
id: Some(id.into()),
..RunWorkflowConfigBuilder::default()
};
builder
}
pub fn create_runner(github_authorization: GithubAuthorization) -> anyhow::Result<Runner> {
Runner::builder()
.github_authorization(github_authorization)
.build()
}