This is an automated email from the ASF dual-hosted git repository.

hgruszecki pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iggy.git


The following commit(s) were added to refs/heads/master by this push:
     new a7e36ca10 feat(connectors): add --version flag support to connector 
runtime (#2502)
a7e36ca10 is described below

commit a7e36ca1031b7c1081b6102e05e10f113334d5c9
Author: Hubert Gruszecki <[email protected]>
AuthorDate: Thu Dec 18 14:05:19 2025 +0100

    feat(connectors): add --version flag support to connector runtime (#2502)
    
    Extract print_ascii_art() in both server and connector runtime.
    Add clap-based Args struct to connector runtime for consistent
    version output via -V/--version flag.
---
 Cargo.lock                          |  1 +
 core/connectors/runtime/Cargo.toml  |  1 +
 core/connectors/runtime/src/main.rs | 16 +++++++++++++---
 core/server/src/main.rs             | 16 ++++++++--------
 4 files changed, 23 insertions(+), 11 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index 65920a8ad..8c079c767 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -4555,6 +4555,7 @@ dependencies = [
  "axum",
  "axum-server",
  "chrono",
+ "clap",
  "dashmap",
  "dlopen2",
  "dotenvy",
diff --git a/core/connectors/runtime/Cargo.toml 
b/core/connectors/runtime/Cargo.toml
index 83f49d103..7c0b2ff43 100644
--- a/core/connectors/runtime/Cargo.toml
+++ b/core/connectors/runtime/Cargo.toml
@@ -33,6 +33,7 @@ async-trait = { workspace = true }
 axum = { workspace = true }
 axum-server = { workspace = true }
 chrono = { workspace = true }
+clap = { workspace = true }
 dashmap = { workspace = true }
 dlopen2 = { workspace = true }
 dotenvy = { workspace = true }
diff --git a/core/connectors/runtime/src/main.rs 
b/core/connectors/runtime/src/main.rs
index d1990d80f..da0ac4214 100644
--- a/core/connectors/runtime/src/main.rs
+++ b/core/connectors/runtime/src/main.rs
@@ -18,6 +18,7 @@
  */
 
 use crate::configs::connectors::{ConnectorsConfigProvider, 
create_connectors_config_provider};
+use clap::Parser;
 use configs::connectors::ConfigFormat;
 use configs::runtime::ConnectorsRuntimeConfig;
 use dlopen2::wrapper::{Container, WrapperApi};
@@ -56,6 +57,10 @@ mod transform;
 #[global_allocator]
 static GLOBAL: MiMalloc = MiMalloc;
 
+#[derive(Parser, Debug)]
+#[command(author = "Apache Iggy (Incubating)", version)]
+struct Args {}
+
 static PLUGIN_ID: AtomicU32 = AtomicU32::new(1);
 const ALLOWED_PLUGIN_EXTENSIONS: [&str; 3] = ["so", "dylib", "dll"];
 const DEFAULT_CONFIG_PATH: &str = "core/connectors/runtime/config.toml";
@@ -89,11 +94,16 @@ struct SinkApi {
     close: extern "C" fn(id: u32) -> i32,
 }
 
-#[tokio::main]
-async fn main() -> Result<(), RuntimeError> {
+fn print_ascii_art(text: &str) {
     let standard_font = FIGfont::standard().unwrap();
-    let figure = standard_font.convert("Iggy Connectors");
+    let figure = standard_font.convert(text);
     println!("{}", figure.unwrap());
+}
+
+#[tokio::main]
+async fn main() -> Result<(), RuntimeError> {
+    Args::parse();
+    print_ascii_art("Iggy Connectors");
 
     if let Ok(env_path) = std::env::var("IGGY_CONNECTORS_ENV_PATH") {
         if dotenvy::from_path(&env_path).is_ok() {
diff --git a/core/server/src/main.rs b/core/server/src/main.rs
index e2d47f79c..5ce51716d 100644
--- a/core/server/src/main.rs
+++ b/core/server/src/main.rs
@@ -101,6 +101,12 @@ fn extract_panic_message(payload: Box<dyn std::any::Any + 
Send>) -> String {
         .unwrap_or_else(|| "unknown panic".to_string())
 }
 
+fn print_ascii_art(text: &str) {
+    let standard_font = FIGfont::standard().unwrap();
+    let figure = standard_font.convert(text);
+    println!("{}", figure.unwrap());
+}
+
 #[instrument(skip_all, name = "trace_start_server")]
 fn main() -> Result<(), ServerError> {
     let rt = match compio::runtime::Runtime::new() {
@@ -115,14 +121,6 @@ fn main() -> Result<(), ServerError> {
         }
     };
     rt.block_on(async move {
-        let standard_font = FIGfont::standard().unwrap();
-        let figure = standard_font.convert("Iggy Server");
-        println!("{}", figure.unwrap());
-
-        if let Some(sha) = option_env!("VERGEN_GIT_SHA") {
-            println!("Commit SHA: {sha}");
-        }
-
         if let Ok(env_path) = std::env::var("IGGY_ENV_PATH") {
             if dotenvy::from_path(&env_path).is_ok() {
                 println!("Loaded environment variables from path: {env_path}");
@@ -134,6 +132,8 @@ fn main() -> Result<(), ServerError> {
             );
         }
         let args = Args::parse();
+        print_ascii_art("Iggy Server");
+
         let is_follower = args.follower;
 
         // FIRST DISCRETE LOADING STEP.

Reply via email to