mod canister;
mod config;
mod metrics;
mod schema;
mod sql;
mod target;
pub(crate) use canister::CanisterCommand;
pub(crate) use config::{ConfigArgs, ConfigCommand, ConfigInitArgs};
pub(crate) use metrics::MetricsArgs;
pub(crate) use schema::SchemaCommand;
pub(crate) use sql::{SqlArgs, SqlShellFields};
pub(crate) use target::{CanisterTarget, EnvironmentTarget};
use clap::{Parser, Subcommand};
pub(crate) const DEFAULT_ENVIRONMENT: &str = "demo";
pub(super) const ICP_ENVIRONMENT_ENV: &str = "ICP_ENVIRONMENT";
#[derive(Debug, Parser)]
#[command(
name = "icydb",
about = "Developer CLI tools for IcyDB",
long_about = None,
version
)]
pub(crate) struct CliArgs {
#[command(subcommand)]
command: CliCommand,
}
impl CliArgs {
pub(crate) fn into_command(self) -> CliCommand {
self.command
}
}
#[derive(Debug, Subcommand)]
pub(crate) enum CliCommand {
Sql(SqlArgs),
Snapshot(CanisterTarget),
Metrics(MetricsArgs),
#[command(subcommand)]
Schema(SchemaCommand),
#[command(subcommand)]
Config(ConfigCommand),
#[command(subcommand)]
Canister(CanisterCommand),
}