wekan_cli/commands/profile/
list.rs1use clap::Args;
2
3use crate::{
4 command_result::{CommandSuccess, ProfileItem, ProfileListSuccess},
5 config::profiles::{ProfileDocument, ProfileStore},
6 error::AppError,
7};
8
9#[derive(Debug, Args)]
10pub struct ListArgs {}
11
12pub(super) fn execute(
13 _args: ListArgs,
14 profile_store: &dyn ProfileStore,
15) -> Result<CommandSuccess, AppError> {
16 let snapshot = profile_store.read().map_err(AppError::from)?;
17 let document = snapshot.document();
18 Ok(CommandSuccess::ProfileList(ProfileListSuccess {
19 active_profile: document.active_profile().map(str::to_owned),
20 profiles: profile_items(document),
21 }))
22}
23
24fn profile_items(document: &ProfileDocument) -> Vec<ProfileItem> {
25 document
26 .profiles()
27 .iter()
28 .map(|(name, profile)| ProfileItem {
29 name: name.clone(),
30 server: profile.server().to_owned(),
31 active: document.active_profile() == Some(name.as_str()),
32 })
33 .collect()
34}