use globset::Glob;
use serde::{Deserialize, Serialize};
use std::collections::BTreeMap;
use std::io::prelude::*;
#[derive(Serialize, Deserialize, Debug)]
pub struct Config {
pub modules: BTreeMap<String, Module>,
pub deploy: Vec<Deploy>,
}
impl Config {
fn read_from_file() -> Result<Self, crate::Error> {
let toml = std::fs::read(".fullstop.toml").map_err(crate::error::ReadConfig::OpenFile)?;
Ok(toml::from_slice(&toml).map_err(crate::error::ReadConfig::ParseToml)?)
}
}
#[derive(Serialize, Deserialize, Debug)]
pub struct Module {
pub include: Vec<Include>,
pub exclude: Vec<Glob>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct Include {
pub glob: Glob,
pub tag: Option<Tag>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub enum Tag {
Rename(String),
}
#[derive(Serialize, Deserialize, Debug)]
pub struct Deploy {
pub module: String,
pub directory: String,
}