omni_dev/cli/atlassian/
mod.rs1pub(crate) mod auth;
4pub mod confluence;
5pub(crate) mod convert;
6pub(crate) mod format;
7pub(crate) mod helpers;
8pub mod jira;
9
10use anyhow::Result;
11use clap::{Parser, Subcommand};
12
13#[derive(Parser)]
15pub struct AtlassianCommand {
16 #[command(subcommand)]
18 pub command: AtlassianSubcommands,
19}
20
21#[derive(Subcommand)]
23pub enum AtlassianSubcommands {
24 Jira(jira::JiraCommand),
26 Confluence(confluence::ConfluenceCommand),
28 Convert(convert::ConvertCommand),
30 Auth(auth::AuthCommand),
32}
33
34impl AtlassianCommand {
35 pub async fn execute(self) -> Result<()> {
37 match self.command {
38 AtlassianSubcommands::Jira(cmd) => cmd.execute().await,
39 AtlassianSubcommands::Confluence(cmd) => cmd.execute().await,
40 AtlassianSubcommands::Convert(cmd) => cmd.execute(),
41 AtlassianSubcommands::Auth(cmd) => cmd.execute().await,
42 }
43 }
44}
45
46#[cfg(test)]
47mod tests {
48 use super::*;
49
50 #[test]
51 fn atlassian_subcommands_jira_variant() {
52 let cmd = AtlassianCommand {
53 command: AtlassianSubcommands::Jira(jira::JiraCommand {
54 command: jira::JiraSubcommands::Edit(jira::edit::EditCommand {
55 key: "PROJ-1".to_string(),
56 }),
57 }),
58 };
59 assert!(matches!(cmd.command, AtlassianSubcommands::Jira(_)));
60 }
61
62 #[test]
63 fn atlassian_subcommands_confluence_variant() {
64 let cmd = AtlassianCommand {
65 command: AtlassianSubcommands::Confluence(confluence::ConfluenceCommand {
66 command: confluence::ConfluenceSubcommands::Edit(confluence::edit::EditCommand {
67 id: "12345".to_string(),
68 }),
69 }),
70 };
71 assert!(matches!(cmd.command, AtlassianSubcommands::Confluence(_)));
72 }
73
74 #[test]
75 fn atlassian_subcommands_auth_variant() {
76 let cmd = AtlassianCommand {
77 command: AtlassianSubcommands::Auth(auth::AuthCommand {
78 command: auth::AuthSubcommands::Login(auth::LoginCommand),
79 }),
80 };
81 assert!(matches!(cmd.command, AtlassianSubcommands::Auth(_)));
82 }
83
84 #[test]
85 fn atlassian_subcommands_convert_variant() {
86 let cmd = AtlassianCommand {
87 command: AtlassianSubcommands::Convert(convert::ConvertCommand {
88 command: convert::ConvertSubcommands::FromAdf(convert::FromAdfCommand {
89 file: None,
90 strip_local_ids: false,
91 }),
92 }),
93 };
94 assert!(matches!(cmd.command, AtlassianSubcommands::Convert(_)));
95 }
96}