use std::path::PathBuf;
use compose_spec_macros::{AsShort, FromShort};
use serde::{Deserialize, Serialize};
use crate::{serde::display_from_str_option, Extensions, Identifier};
#[derive(Serialize, Deserialize, AsShort, FromShort, Debug, Clone, PartialEq, Eq)]
pub struct ConfigOrSecret {
#[as_short(short)]
pub source: Identifier,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub target: Option<PathBuf>,
#[serde(
default,
with = "display_from_str_option",
skip_serializing_if = "Option::is_none"
)]
pub uid: Option<u32>,
#[serde(
default,
with = "display_from_str_option",
skip_serializing_if = "Option::is_none"
)]
pub gid: Option<u32>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mode: Option<u32>,
#[serde(flatten)]
pub extensions: Extensions,
}