use serde::{Deserialize, Serialize};
use std::path::PathBuf;
use crate::GHASError;
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CodeQLDatabaseConfig {
#[serde(rename = "sourceLocationPrefix")]
pub source_location_prefix: Option<String>,
#[serde(rename = "primaryLanguage")]
pub primary_language: String,
#[serde(rename = "baselineLinesOfCode")]
pub baseline_lines_of_code: usize,
#[serde(rename = "unicodeNewlines")]
pub unicode_newlines: bool,
#[serde(rename = "columnKind")]
pub column_kind: String,
#[serde(rename = "creationMetadata")]
pub creation_metadata: Option<CodeQLDatabaseConfigMetadata>,
#[serde(rename = "buildMode")]
pub build_mode: Option<String>,
#[serde(default, rename = "finalised")]
pub finalised: bool,
}
impl CodeQLDatabaseConfig {
pub fn read(path: &PathBuf) -> Result<CodeQLDatabaseConfig, GHASError> {
let file = std::fs::File::open(path)?;
let reader = std::io::BufReader::new(file);
let config: CodeQLDatabaseConfig = serde_yaml::from_reader(reader)?;
Ok(config)
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CodeQLDatabaseConfigMetadata {
pub sha: Option<String>,
#[serde(rename = "cliVersion")]
pub cli_version: String,
#[serde(rename = "creationTime")]
pub creation_time: chrono::DateTime<chrono::Utc>,
}