use std::fmt::Debug;
use crate::params::{
CmdParamsBuilder, FlowParams, KeyMaybe, KeyUnknown, ParamsKeys, ParamsKeysImpl, ProfileParams,
WorkspaceParams,
};
#[derive(Debug)]
pub struct CmdParams<PKeys>
where
PKeys: ParamsKeys + 'static,
{
workspace_params: WorkspaceParams<<PKeys::WorkspaceParamsKMaybe as KeyMaybe>::Key>,
profile_params: ProfileParams<<PKeys::ProfileParamsKMaybe as KeyMaybe>::Key>,
flow_params: FlowParams<<PKeys::FlowParamsKMaybe as KeyMaybe>::Key>,
}
impl CmdParams<ParamsKeysImpl<KeyUnknown, KeyUnknown, KeyUnknown>> {
pub fn builder() -> CmdParamsBuilder<ParamsKeysImpl<KeyUnknown, KeyUnknown, KeyUnknown>> {
CmdParamsBuilder::new()
}
}
impl<PKeys> CmdParams<PKeys>
where
PKeys: ParamsKeys + 'static,
{
pub(crate) fn new(
workspace_params: WorkspaceParams<<PKeys::WorkspaceParamsKMaybe as KeyMaybe>::Key>,
profile_params: ProfileParams<<PKeys::ProfileParamsKMaybe as KeyMaybe>::Key>,
flow_params: FlowParams<<PKeys::FlowParamsKMaybe as KeyMaybe>::Key>,
) -> Self {
Self {
workspace_params,
profile_params,
flow_params,
}
}
pub fn workspace_params(
&self,
) -> &WorkspaceParams<<PKeys::WorkspaceParamsKMaybe as KeyMaybe>::Key> {
&self.workspace_params
}
pub fn workspace_params_mut(
&mut self,
) -> &mut WorkspaceParams<<PKeys::WorkspaceParamsKMaybe as KeyMaybe>::Key> {
&mut self.workspace_params
}
pub fn profile_params(&self) -> &ProfileParams<<PKeys::ProfileParamsKMaybe as KeyMaybe>::Key> {
&self.profile_params
}
pub fn profile_params_mut(
&mut self,
) -> &mut ProfileParams<<PKeys::ProfileParamsKMaybe as KeyMaybe>::Key> {
&mut self.profile_params
}
pub fn flow_params(&self) -> &FlowParams<<PKeys::FlowParamsKMaybe as KeyMaybe>::Key> {
&self.flow_params
}
pub fn flow_params_mut(
&mut self,
) -> &mut FlowParams<<PKeys::FlowParamsKMaybe as KeyMaybe>::Key> {
&mut self.flow_params
}
}
impl<PKeys> Default for CmdParams<PKeys>
where
PKeys: ParamsKeys + 'static,
{
fn default() -> Self {
Self {
workspace_params: WorkspaceParams::default(),
profile_params: ProfileParams::default(),
flow_params: FlowParams::default(),
}
}
}