camel_bridge/spec.rs
1/// Static descriptor for a bridge binary (JMS, XML, or future bridges).
2/// All fields are `&'static str` so constants can be declared at compile time.
3#[derive(Debug, Clone, Copy)]
4pub struct BridgeSpec {
5 /// Human-readable name used in log messages and error strings.
6 pub name: &'static str,
7 /// Environment variable that overrides the binary path (e.g. `CAMEL_JMS_BRIDGE_BINARY_PATH`).
8 pub env_binary_path: &'static str,
9 /// Environment variable that overrides the GitHub Releases base URL.
10 pub env_release_url: &'static str,
11 /// Sub-directory under the shared rust-camel cache root (e.g. `"jms-bridge"`).
12 pub cache_subdir: &'static str,
13 /// Prefix used in GitHub release tag names (e.g. `"jms-bridge-v"`).
14 pub release_tag_prefix: &'static str,
15 /// Default version string used when no version is specified by the caller.
16 pub default_version: &'static str,
17 /// Template for the stderr log file name; `{pid}` is replaced at runtime.
18 /// Example: `"jms-bridge-{pid}.log"`
19 pub log_file_template: &'static str,
20 /// Whether pre-built binaries are available for macOS.
21 /// JMS bridge: false (requires Docker build). XML bridge: true (GraalVM native-image).
22 pub macos_supported: bool,
23}
24
25/// Spec for the JMS bridge (`bridges/jms`).
26pub const JMS_BRIDGE: BridgeSpec = BridgeSpec {
27 name: "jms-bridge",
28 env_binary_path: "CAMEL_JMS_BRIDGE_BINARY_PATH",
29 env_release_url: "CAMEL_JMS_BRIDGE_RELEASE_URL",
30 cache_subdir: "jms-bridge",
31 release_tag_prefix: "jms-bridge-v",
32 default_version: env!("CARGO_PKG_VERSION"),
33 log_file_template: "jms-bridge-{pid}.log",
34 macos_supported: false,
35};
36
37/// Spec for the XML bridge (`bridges/xml`).
38pub const XML_BRIDGE: BridgeSpec = BridgeSpec {
39 name: "xml-bridge",
40 env_binary_path: "CAMEL_XML_BRIDGE_BINARY_PATH",
41 env_release_url: "CAMEL_XML_BRIDGE_RELEASE_URL",
42 cache_subdir: "xml-bridge",
43 release_tag_prefix: "xml-bridge-v",
44 default_version: env!("CARGO_PKG_VERSION"),
45 log_file_template: "xml-bridge-{pid}.log",
46 macos_supported: true,
47};