pub(crate) mod auth;
pub mod confluence;
pub(crate) mod convert;
pub(crate) mod format;
pub(crate) mod helpers;
pub mod jira;
use anyhow::Result;
use clap::{Parser, Subcommand};
#[derive(Parser)]
pub struct AtlassianCommand {
#[command(subcommand)]
pub command: AtlassianSubcommands,
}
#[derive(Subcommand)]
pub enum AtlassianSubcommands {
Jira(jira::JiraCommand),
Confluence(confluence::ConfluenceCommand),
Convert(convert::ConvertCommand),
Auth(auth::AuthCommand),
}
impl AtlassianCommand {
pub async fn execute(self) -> Result<()> {
match self.command {
AtlassianSubcommands::Jira(cmd) => cmd.execute().await,
AtlassianSubcommands::Confluence(cmd) => cmd.execute().await,
AtlassianSubcommands::Convert(cmd) => cmd.execute(),
AtlassianSubcommands::Auth(cmd) => cmd.execute().await,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn atlassian_subcommands_jira_variant() {
let cmd = AtlassianCommand {
command: AtlassianSubcommands::Jira(jira::JiraCommand {
command: jira::JiraSubcommands::Edit(jira::edit::EditCommand {
key: "PROJ-1".to_string(),
}),
}),
};
assert!(matches!(cmd.command, AtlassianSubcommands::Jira(_)));
}
#[test]
fn atlassian_subcommands_confluence_variant() {
let cmd = AtlassianCommand {
command: AtlassianSubcommands::Confluence(confluence::ConfluenceCommand {
command: confluence::ConfluenceSubcommands::Edit(confluence::edit::EditCommand {
id: "12345".to_string(),
}),
}),
};
assert!(matches!(cmd.command, AtlassianSubcommands::Confluence(_)));
}
#[test]
fn atlassian_subcommands_auth_variant() {
let cmd = AtlassianCommand {
command: AtlassianSubcommands::Auth(auth::AuthCommand {
command: auth::AuthSubcommands::Login(auth::LoginCommand),
}),
};
assert!(matches!(cmd.command, AtlassianSubcommands::Auth(_)));
}
#[test]
fn atlassian_subcommands_convert_variant() {
let cmd = AtlassianCommand {
command: AtlassianSubcommands::Convert(convert::ConvertCommand {
command: convert::ConvertSubcommands::FromAdf(convert::FromAdfCommand {
file: None,
strip_local_ids: false,
}),
}),
};
assert!(matches!(cmd.command, AtlassianSubcommands::Convert(_)));
}
}