Skip to main content

pgmt/commands/init/
mod.rs

1pub mod commands;
2pub mod import;
3pub mod project;
4pub mod prompts;
5
6use clap::Parser;
7
8// Re-export command functions and types
9pub use commands::{
10    BaselineCreationConfig, DatabaseState, InitOptions, ObjectManagementConfig, cmd_init_with_args,
11};
12
13/// CLI arguments for the init command
14#[derive(Parser)]
15pub struct InitArgs {
16    /// Database URL for development
17    #[clap(long)]
18    pub dev_url: Option<String>,
19
20    /// Skip import (create empty project)
21    #[clap(long)]
22    pub no_import: bool,
23
24    /// Use defaults for all prompts (non-interactive mode)
25    #[clap(long)]
26    pub defaults: bool,
27
28    /// Schema directory name
29    #[clap(long, default_value = "schema")]
30    pub schema_dir: String,
31
32    /// Migrations directory name
33    #[clap(long)]
34    pub migrations_dir: Option<String>,
35
36    /// Baselines directory name
37    #[clap(long)]
38    pub baselines_dir: Option<String>,
39
40    /// Use auto shadow database (skip shadow database prompt)
41    #[clap(long)]
42    pub auto_shadow: bool,
43
44    /// PostgreSQL version for auto shadow database (e.g., "14", "15", "16")
45    #[clap(long)]
46    pub shadow_pg_version: Option<String>,
47
48    /// Create baseline from existing database (non-interactive)
49    #[clap(long)]
50    pub create_baseline: bool,
51
52    /// Skip baseline creation (non-interactive)
53    #[clap(long)]
54    pub no_baseline: bool,
55
56    /// Custom description for baseline
57    #[clap(long)]
58    pub baseline_description: Option<String>,
59
60    /// Path to roles file (default: auto-detect roles.sql)
61    #[clap(long)]
62    pub roles_file: Option<String>,
63
64    /// Force fresh initialization (overwrite existing config)
65    #[clap(long)]
66    pub fresh: bool,
67}