use chrono::{DateTime, Utc};
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use super::common::Resource;
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum ExecutionProgress {
Pending,
Running,
Complete,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum CompletionStatus {
Succeeded,
Failed,
Errored,
Canceled,
Skipped,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum ActionType {
Build,
Analyze,
Test,
Archive,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum ProductType {
App,
Framework,
#[serde(other)]
Unknown,
}
pub type CiProduct = Resource<CiProductAttributes>;
#[derive(Debug, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CiProductAttributes {
pub name: Option<String>,
pub product_type: Option<ProductType>,
pub bundle_id: Option<String>,
pub created_date: Option<DateTime<Utc>>,
}
pub type CiWorkflow = Resource<CiWorkflowAttributes>;
#[derive(Debug, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CiWorkflowAttributes {
pub name: Option<String>,
pub description: Option<String>,
pub last_modified_date: Option<DateTime<Utc>>,
pub is_enabled: Option<bool>,
pub is_locked_for_editing: Option<bool>,
pub clean: Option<bool>,
}
pub type CiBuildRun = Resource<CiBuildRunAttributes>;
#[derive(Debug, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CiBuildRunAttributes {
pub number: Option<i64>,
pub created_date: Option<DateTime<Utc>>,
pub started_date: Option<DateTime<Utc>>,
pub finished_date: Option<DateTime<Utc>>,
pub source_commit: Option<SourceCommit>,
pub execution_progress: Option<ExecutionProgress>,
pub completion_status: Option<CompletionStatus>,
}
#[derive(Debug, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct SourceCommit {
pub commit_sha: Option<String>,
pub message: Option<String>,
}
pub type CiBuildAction = Resource<CiBuildActionAttributes>;
#[derive(Debug, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CiBuildActionAttributes {
pub name: Option<String>,
pub action_type: Option<ActionType>,
pub started_date: Option<DateTime<Utc>>,
pub finished_date: Option<DateTime<Utc>>,
pub issue_counts: Option<IssueCounts>,
pub execution_progress: Option<ExecutionProgress>,
pub completion_status: Option<CompletionStatus>,
}
#[derive(Debug, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct IssueCounts {
pub analyzer_warnings: Option<i64>,
pub errors: Option<i64>,
pub test_failures: Option<i64>,
pub warnings: Option<i64>,
}
pub type CiArtifact = Resource<CiArtifactAttributes>;
#[derive(Debug, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CiArtifactAttributes {
pub name: Option<String>,
pub file_type: Option<String>,
pub file_size: Option<i64>,
pub download_url: Option<String>,
}
#[cfg(test)]
#[path = "ci_tests.rs"]
mod tests;