//! Contract subcommand - task-contract interaction commands.
use clap::Args;
use uuid::Uuid;
/// Common arguments for contract commands.
#[derive(Args, Debug, Clone)]
pub struct ContractArgs {
/// API URL
#[arg(long, env = "MAKIMA_API_URL", default_value = "https://api.makima.jp", global = true)]
pub api_url: String,
/// API key for authentication
#[arg(long, env = "MAKIMA_API_KEY", global = true)]
pub api_key: String,
/// Current task ID (optional)
#[arg(long, env = "MAKIMA_TASK_ID", global = true)]
pub task_id: Option<Uuid>,
/// Contract ID
#[arg(long, env = "MAKIMA_CONTRACT_ID", global = true)]
pub contract_id: Uuid,
}
/// Arguments for file command (get specific file).
#[derive(Args, Debug)]
pub struct FileArgs {
#[command(flatten)]
pub common: ContractArgs,
/// File ID to retrieve
pub file_id: Uuid,
}
/// Arguments for report command.
#[derive(Args, Debug)]
pub struct ReportArgs {
#[command(flatten)]
pub common: ContractArgs,
/// Progress message
pub message: String,
}
/// Arguments for completion-action command.
#[derive(Args, Debug)]
pub struct CompletionActionArgs {
#[command(flatten)]
pub common: ContractArgs,
/// Comma-separated list of modified files
#[arg(long)]
pub files: Option<String>,
/// Number of lines added
#[arg(long, default_value = "0")]
pub lines_added: i32,
/// Number of lines removed
#[arg(long, default_value = "0")]
pub lines_removed: i32,
/// Whether there are code changes
#[arg(long)]
pub code: bool,
}
/// Arguments for update-file command.
#[derive(Args, Debug)]
pub struct UpdateFileArgs {
#[command(flatten)]
pub common: ContractArgs,
/// File ID to update
pub file_id: Uuid,
}
/// Arguments for create-file command.
#[derive(Args, Debug)]
pub struct CreateFileArgs {
#[command(flatten)]
pub common: ContractArgs,
/// Name of the new file
pub name: String,
}