cosmicus 0.1.9

Cosmicus Client and Server to make the runner better
Documentation
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()
}