Skip to content

Commit a4dfe11

Browse files
committed
refactor: unify CLI field attributes and remove dead code
Change #[clap(..)] to #[arg(..)] on field-level attributes across jira, confluence, hackernews, and markdown CLI structs. Remove unused Serialize derives from option structs that are never serialized, and clean up dead imports and variables.
1 parent c363251 commit a4dfe11

8 files changed

Lines changed: 19 additions & 20 deletions

File tree

crates/mcptools/src/atlassian/confluence.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use super::{create_confluence_client, ConfluenceConfig};
22
use crate::prelude::{eprintln, println, *};
3-
use serde::{Deserialize, Serialize};
3+
use serde::Deserialize;
44

55
// Import domain models and pure functions from core crate
66
use mcptools_core::atlassian::confluence::transform_search_results;
@@ -17,10 +17,10 @@ pub enum Commands {
1717
}
1818

1919
/// Options for searching Confluence pages
20-
#[derive(Debug, clap::Args, Serialize, Deserialize, Clone)]
20+
#[derive(Debug, clap::Args, Deserialize, Clone)]
2121
pub struct SearchOptions {
2222
/// CQL query (e.g., "space = SPACE AND text ~ 'keyword'")
23-
#[clap(env = "CONFLUENCE_QUERY")]
23+
#[arg(env = "CONFLUENCE_QUERY")]
2424
pub query: String,
2525

2626
/// Maximum number of results to return
@@ -95,7 +95,6 @@ async fn search_handler(options: SearchOptions) -> Result<()> {
9595
let mut table = crate::prelude::new_table();
9696
table.add_row(prettytable::row!["Title", "Type", "URL"]);
9797

98-
let num_pages = data.pages.len();
9998
for page in data.pages {
10099
let url = page.url.unwrap_or_else(|| "N/A".to_string());
101100
table.add_row(prettytable::row![page.title, page.page_type, url]);

crates/mcptools/src/atlassian/jira/get.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
use mcptools_core::atlassian::jira::{
2-
transform_ticket_response, JiraComment, JiraExtendedIssueResponse, TicketOutput,
2+
transform_ticket_response, JiraExtendedIssueResponse, TicketOutput,
33
};
4-
use serde::{Deserialize, Serialize};
4+
use serde::Deserialize;
55

66
use crate::atlassian::{create_jira_client, JiraConfig};
77
use crate::prelude::{println, *};
88

99
/// Options for getting a Jira ticket
10-
#[derive(Debug, clap::Args, Serialize, Deserialize, Clone)]
10+
#[derive(Debug, clap::Args, Deserialize, Clone)]
1111
pub struct GetOptions {
1212
/// Issue key (e.g., "PROJ-123")
13-
#[clap(env = "JIRA_ISSUE_KEY")]
13+
#[arg(env = "JIRA_ISSUE_KEY")]
1414
pub issue_key: String,
1515

1616
/// Output as JSON

crates/mcptools/src/atlassian/jira/search.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
use crate::prelude::{eprintln, println, *};
2-
use serde::{Deserialize, Serialize};
2+
use serde::Deserialize;
33
use std::path::PathBuf;
44

55
// Import domain models and pure functions from core crate
66
use mcptools_core::atlassian::jira::transform_search_response;
77
pub use mcptools_core::atlassian::jira::{IssueOutput, JiraSearchResponse, SearchOutput};
88

99
/// Options for searching Jira issues
10-
#[derive(Debug, clap::Args, Serialize, Deserialize, Clone)]
10+
#[derive(Debug, clap::Args, Deserialize, Clone)]
1111
#[command(after_help = "EXAMPLES:
1212
# Get all tickets assigned to the current user:
1313
mcptools atlassian jira search \"assignee = currentUser()\"
@@ -60,7 +60,7 @@ NOTES:
6060
- Saved queries are stored in ~/.config/mcptools/queries/")]
6161
pub struct SearchOptions {
6262
/// JQL query (e.g., "project = PROJ AND status = Open"), optional when using --query, --list, --load, or --delete
63-
#[clap(env = "JIRA_QUERY")]
63+
#[arg(env = "JIRA_QUERY")]
6464
pub jql_query: Option<String>,
6565

6666
/// Maximum number of results to return per page

crates/mcptools/src/hn/list_items.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use mcptools_core::hn::{
77

88
use super::{fetch_item, get_api_base};
99

10-
#[derive(Debug, clap::Args, serde::Serialize, serde::Deserialize, Clone)]
10+
#[derive(Debug, clap::Args, serde::Deserialize, Clone)]
1111
pub struct ListOptions {
1212
/// Story type: top, new, best, ask, show, job
1313
#[arg(value_name = "TYPE", default_value = "top")]

crates/mcptools/src/hn/read_item.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ use serde::Serialize;
1010

1111
use super::{extract_item_id, fetch_item, truncate_text};
1212

13-
#[derive(Debug, clap::Args, serde::Serialize, serde::Deserialize, Clone)]
13+
#[derive(Debug, clap::Args, serde::Deserialize, Clone)]
1414
pub struct ReadOptions {
1515
/// HackerNews item ID or full URL (e.g., "45440028" or "https://news.ycombinator.com/item?id=45440028")
16-
#[clap(env = "HN_ITEM")]
16+
#[arg(env = "HN_ITEM")]
1717
pub item: String,
1818

1919
/// Number of top-level comments per page

crates/mcptools/src/md/fetch.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ use std::io::IsTerminal;
44

55
use super::{fetch_and_convert_data, FetchOutput, SelectionStrategy};
66

7-
#[derive(Debug, clap::Args, serde::Serialize, serde::Deserialize, Clone)]
7+
#[derive(Debug, clap::Args, serde::Deserialize, Clone)]
88
pub struct FetchOptions {
99
/// URL to fetch
10-
#[clap(env = "MD_URL")]
10+
#[arg(env = "MD_URL")]
1111
pub url: String,
1212

1313
/// Timeout in seconds (default: 30)

crates/mcptools/src/md/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use std::time::Instant;
77

88
pub use mcptools_core::md::{FetchOutput, MdPaginationInfo};
99

10-
#[derive(Debug, Clone, clap::ValueEnum, serde::Serialize, serde::Deserialize)]
10+
#[derive(Debug, Clone, clap::ValueEnum, serde::Deserialize)]
1111
#[serde(rename_all = "lowercase")]
1212
pub enum SelectionStrategy {
1313
/// Select the first matching element (default)

crates/mcptools/src/md/toc.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ use std::io::IsTerminal;
66

77
use super::{fetch_and_convert_data, SelectionStrategy};
88

9-
#[derive(Debug, clap::Args, serde::Serialize, serde::Deserialize, Clone)]
9+
#[derive(Debug, clap::Args, serde::Deserialize, Clone)]
1010
pub struct TocOptions {
1111
/// URL to fetch
12-
#[clap(env = "MD_URL")]
12+
#[arg(env = "MD_URL")]
1313
pub url: String,
1414

1515
/// Timeout in seconds (default: 30)
@@ -37,7 +37,7 @@ pub struct TocOptions {
3737
pub json: bool,
3838
}
3939

40-
#[derive(Debug, Clone, clap::ValueEnum, serde::Serialize, serde::Deserialize)]
40+
#[derive(Debug, Clone, clap::ValueEnum, serde::Deserialize)]
4141
#[serde(rename_all = "lowercase")]
4242
pub enum OutputFormat {
4343
/// Indented text format (2 spaces per level)

0 commit comments

Comments
 (0)