use clap::Parser;
#[derive(Parser, Debug)]
#[command(name = "kanbars")]
#[command(about = "🦀 Lightweight Terminal Kanban for JIRA", long_about = None)]
pub struct Args {
#[arg(long)]
pub jql: Option<String>,
#[arg(long)]
pub epic: Option<String>,
#[arg(long)]
pub assignee: Option<String>,
#[arg(long)]
pub url: Option<String>,
#[arg(long)]
pub init: bool,
}
impl Args {
pub fn build_jql(&self, default_jql: &str) -> String {
if let Some(ref jql) = self.jql {
return jql.clone();
}
let mut jql = default_jql.to_string();
if let Some(ref epic) = self.epic {
jql = format!("\"Epic Link\" = {} AND {}", epic, jql);
}
if let Some(ref assignee) = self.assignee {
if jql.contains("assignee") {
jql = jql.replace("assignee = currentUser()", &format!("assignee = '{}'", assignee));
jql = jql.replace("developer = 'Jake Swanson'", &format!("assignee = '{}'", assignee));
} else {
jql = format!("assignee = '{}' AND {}", assignee, jql);
}
}
jql
}
}