Skip to main content

bw/command/
create.rs

1use clap::Subcommand;
2
3use crate::{
4    admin_console::CreateCollectionArgs,
5    render::CommandOutput,
6    vault::{CreateAttachmentArgs, CreateFolderArgs, CreateItemArgs},
7};
8
9#[derive(Subcommand, Clone)]
10#[clap(rename_all = "kebab-case")]
11pub enum CreateCommands {
12    #[command(about = "Create an item in the vault.")]
13    Item(CreateItemArgs),
14
15    #[command(about = "Create an attachment for an item.")]
16    Attachment(CreateAttachmentArgs),
17
18    #[command(about = "Create a folder.")]
19    Folder(CreateFolderArgs),
20
21    #[command(about = "Create an organization collection.")]
22    OrgCollection(CreateCollectionArgs),
23}
24
25/// Create command is unowned as it spans multiple teams.
26///
27/// Sub-commands should delegate to team owned implementations.
28impl CreateCommands {
29    pub fn run(&self) -> color_eyre::eyre::Result<CommandOutput> {
30        match self {
31            CreateCommands::Item(_args) => unimplemented!("Create item not implemented yet"),
32            CreateCommands::Attachment(_args) => {
33                unimplemented!("Create attachment not implemented yet")
34            }
35            CreateCommands::Folder(_args) => unimplemented!("Create folder not implemented yet"),
36            CreateCommands::OrgCollection(_args) => {
37                unimplemented!("Create organization collection not implemented yet")
38            }
39        }
40    }
41}