oph 0.1.0

OpenHealth CLI - Universal development tool for the OpenHealth team
Documentation
pub mod commands;
pub mod config;
pub mod docker;
pub mod interactive;
pub mod ui;

// Re-export Cli for completions
pub use crate::commands::clean::CleanCommand;
pub use crate::commands::db::DbCommand;
pub use crate::commands::dev::DevCommand;
pub use crate::commands::prod::ProdCommand;
pub use crate::commands::redis::RedisCommand;
pub use crate::commands::run::RunCommand;
pub use crate::commands::storage::StorageCommand;
pub use crate::commands::validate::ValidateCommand;

use clap::{Parser, Subcommand};
use clap_complete::Shell;

#[derive(Parser)]
#[command(
    name = "oph",
    about = "OpenHealth CLI - Universal development tool",
    version,
    author = "OpenHealth Team",
    propagate_version = true
)]
pub struct Cli {
    #[command(subcommand)]
    pub command: Commands,
}

#[derive(Subcommand)]
pub enum Commands {
    /// Development environment commands
    Dev {
        #[command(subcommand)]
        command: DevCommand,
    },
    /// Production environment commands
    Prod {
        #[command(subcommand)]
        command: ProdCommand,
    },
    /// Database commands
    Db {
        #[command(subcommand)]
        command: DbCommand,
    },
    /// Redis commands
    Redis {
        #[command(subcommand)]
        command: RedisCommand,
    },
    /// Storage commands
    Storage {
        #[command(subcommand)]
        command: StorageCommand,
    },
    /// Run bun scripts
    Run {
        #[command(subcommand)]
        command: RunCommand,
    },
    /// Validate docker-compose configuration
    Validate {
        #[command(subcommand)]
        command: ValidateCommand,
    },
    /// Docker cleanup commands
    Clean {
        #[command(subcommand)]
        command: CleanCommand,
    },
    /// Generate shell completions
    Completions {
        /// Shell to generate completions for
        #[arg(value_enum)]
        shell: Shell,
    },
    /// Interactive command picker
    #[command(alias = "i")]
    Interactive,
}