use std::path::PathBuf;
use clap::{Args, Parser, Subcommand};
#[derive(Parser, Debug)]
#[command(name = "pmx")]
#[command(about = "A prompt management suite")]
#[command(version)]
pub struct Arg {
#[arg(long)]
pub config: Option<PathBuf>,
#[command(subcommand)]
pub command: Command,
}
#[derive(Debug, Subcommand)]
pub enum Command {
SetClaudeProfile(ClaudeProfile),
ResetClaudeProfile,
AppendClaudeProfile(ClaudeProfile),
SetCodexProfile(CodexProfile),
ResetCodexProfile,
AppendCodexProfile(CodexProfile),
#[command(subcommand)]
Profile(ProfileCommand),
Completion(CompletionArgs),
#[command(subcommand, hide = true)]
InternalCompletion(InternalCompletionCommand),
Mcp(McpArgs),
}
#[derive(Debug, Args)]
pub struct ClaudeProfile {
pub path: String,
}
#[derive(Debug, Args)]
pub struct CodexProfile {
pub path: String,
}
#[derive(Debug, Args)]
pub struct CompletionArgs {
#[arg(value_enum)]
pub shell: Shell,
}
#[derive(Debug, Clone, clap::ValueEnum)]
pub enum Shell {
Zsh,
}
#[derive(Debug, Subcommand)]
pub enum ProfileCommand {
List,
Edit(ProfileArgs),
Delete(ProfileArgs),
Create(ProfileArgs),
Show(ProfileArgs),
Copy(ProfileArgs),
}
#[derive(Debug, Args)]
pub struct ProfileArgs {
pub name: String,
}
#[derive(Debug, Args)]
pub struct McpArgs {
}
#[derive(Debug, Subcommand)]
pub enum InternalCompletionCommand {
ClaudeProfiles,
CodexProfiles,
EnabledCommands,
ProfileNames,
}