use std::collections::HashMap;
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq)]
pub struct BuildConfig {
pub system: BuildSystem,
}
impl Default for BuildConfig {
fn default() -> Self {
Self {
system: BuildSystem::Cargo(Cargo::default()),
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq)]
pub enum BuildSystem {
Custom(Custom),
Cargo(Cargo),
}
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq)]
pub struct Custom {
pub build_cmd: String,
pub elf_path: String,
pub to_bin: bool,
}
#[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq)]
pub struct Cargo {
pub env: HashMap<String, String>,
pub target: String,
pub package: String,
pub features: Vec<String>,
pub log: Option<LogLevel>,
pub extra_config: Option<String>,
pub args: Vec<String>,
pub pre_build_cmds: Vec<String>,
pub post_build_cmds: Vec<String>,
pub to_bin: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq)]
pub struct Depend {
pub name: String,
pub d_features: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq)]
pub enum LogLevel {
Trace,
Debug,
Info,
Warn,
Error,
}