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