use serde::Deserialize;
use std::path::PathBuf;
#[derive(Deserialize, Debug, Clone)]
pub struct GettextConfig {
pub target_languages: Vec<String>,
pub output_dir: PathBuf,
#[serde(default)]
pub extract_to_parent: bool,
#[serde(default)]
pub collate_extracted_subcrates: bool,
pub copyright_holder: Option<String>,
pub msgid_bugs_address: Option<String>,
pub xtr: Option<bool>,
#[serde(default)]
pub add_location: GettextAddLocation,
pot_dir: Option<PathBuf>,
po_dir: Option<PathBuf>,
mo_dir: Option<PathBuf>,
}
impl GettextConfig {
pub fn pot_dir(&self) -> PathBuf {
self.pot_dir
.clone()
.unwrap_or_else(|| self.output_dir.join("pot"))
}
pub fn po_dir(&self) -> PathBuf {
self.po_dir
.clone()
.unwrap_or_else(|| self.output_dir.join("po"))
}
pub fn mo_dir(&self) -> PathBuf {
self.mo_dir
.clone()
.unwrap_or_else(|| self.output_dir.join("mo"))
}
}
#[derive(Deserialize, Debug, Clone)]
#[serde(rename_all = "lowercase")]
pub enum GettextAddLocation {
Full,
File,
Never,
}
impl GettextAddLocation {
pub fn to_str(&self) -> &str {
match self {
GettextAddLocation::Full => "full",
GettextAddLocation::File => "file",
GettextAddLocation::Never => "never",
}
}
}
impl Default for GettextAddLocation {
fn default() -> Self {
GettextAddLocation::Full
}
}