Skip to content

Commit

Permalink
Introduce features in rust-pgdatadiff-client
Browse files Browse the repository at this point in the history
  • Loading branch information
pavlospt committed Mar 15, 2024
1 parent c1957df commit 3356808
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 42 deletions.
9 changes: 7 additions & 2 deletions rust-pgdatadiff-client/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,13 @@ documentation = "https://docs.rs/rust-pgdatadiff-client"

[dependencies]
anyhow = "1.0.81"
clap = { version = "4.5.2", features = ["derive"] }
clap = { version = "4.5.2", features = ["derive"], optional = true }
tokio = "1.36.0"
env_logger = "0.11.3"
rust-pgdatadiff = { version = "0.1.2", path = ".." }
inquire = "0.7.1"
inquire = { version = "0.7.1", optional = true }

[features]
default = []
with-inquire = ["dep:inquire"]
with-clap = ["dep:clap"]
103 changes: 63 additions & 40 deletions rust-pgdatadiff-client/src/main.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
use anyhow::Result;
use clap::{Parser, Subcommand};
use inquire::{Confirm, Text};
use rust_pgdatadiff::diff::diff_ops::Differ;

Check failure on line 2 in rust-pgdatadiff-client/src/main.rs

View workflow job for this annotation

GitHub Actions / cargo build (client, rust-pgdatadiff-client)

unused import: `rust_pgdatadiff::diff::diff_ops::Differ`

Check failure on line 2 in rust-pgdatadiff-client/src/main.rs

View workflow job for this annotation

GitHub Actions / cargo test

unused import: `rust_pgdatadiff::diff::diff_ops::Differ`
use rust_pgdatadiff::diff::diff_payload::DiffPayload;

Check failure on line 3 in rust-pgdatadiff-client/src/main.rs

View workflow job for this annotation

GitHub Actions / cargo build (client, rust-pgdatadiff-client)

unused import: `rust_pgdatadiff::diff::diff_payload::DiffPayload`

Check failure on line 3 in rust-pgdatadiff-client/src/main.rs

View workflow job for this annotation

GitHub Actions / cargo test

unused import: `rust_pgdatadiff::diff::diff_payload::DiffPayload`

#[cfg(feature = "with-inquire")]
use inquire::{Confirm, Text};

#[cfg(feature = "with-clap")]
use clap::{Parser, Subcommand};

#[cfg(feature = "with-clap")]
#[derive(Parser)]
#[command(author, version, about, long_about = None)]
#[command(propagate_version = true)]
Expand All @@ -12,6 +17,7 @@ struct Cli {
command: Commands,
}

#[cfg(feature = "with-clap")]
#[derive(Subcommand)]
enum Commands {
#[command(about = "Print the version")]
Expand Down Expand Up @@ -48,45 +54,46 @@ enum Commands {
},
}

#[tokio::main]
async fn main() -> Result<()> {
env_logger::init();

// let cli = Cli::parse();
// match &cli.command {
// Commands::Version => {
// println!("Version: {}", env!("CARGO_PKG_VERSION"));
// Ok(())
// }
// Commands::Diff {
// first_db,
// second_db,
// only_tables,
// only_sequences,
// only_count,
// chunk_size,
// max_connections,
// include_tables,
// exclude_tables,
// schema_name,
// } => {
// let payload = DiffPayload::new(
// first_db.clone(),
// second_db.clone(),
// *only_tables,
// *only_sequences,
// *only_count,
// *chunk_size,
// *max_connections,
// include_tables.to_vec(),
// exclude_tables.to_vec(),
// schema_name.clone(),
// );
// let _ = Differ::diff_dbs(payload).await;
// Ok(())
// }
// }
#[cfg(feature = "with-clap")]
async fn main_clap() -> Result<()> {
let cli = Cli::parse();
match &cli.command {
Commands::Version => {
println!("Version: {}", env!("CARGO_PKG_VERSION"));
Ok(())
}
Commands::Diff {
first_db,
second_db,
only_tables,
only_sequences,
only_count,
chunk_size,
max_connections,
include_tables,
exclude_tables,
schema_name,
} => {
let payload = DiffPayload::new(
first_db.clone(),
second_db.clone(),
*only_tables,
*only_sequences,
*only_count,
*chunk_size,
*max_connections,
include_tables.to_vec(),
exclude_tables.to_vec(),
schema_name.clone(),
);
let _ = Differ::diff_dbs(payload).await;
Ok(())
}
}
}

#[cfg(feature = "with-inquire")]
async fn main_inquire() -> Result<()> {
let first_db = Text::new("First DB")
.with_default("postgres://postgres:postgres@localhost:5438/example")
.with_help_message("Enter the first database connection string")
Expand Down Expand Up @@ -143,3 +150,19 @@ async fn main() -> Result<()> {
let _ = Differ::diff_dbs(payload).await;
Ok(())
}

#[tokio::main]
async fn main() -> Result<()> {
env_logger::init();

#[cfg(feature = "with-clap")]
{
_ = main_clap().await;
}
#[cfg(feature = "with-inquire")]
{
_ = main_inquire().await;
}

Ok(())
}

0 comments on commit 3356808

Please sign in to comment.