pub fn version_message(crate_version: &str) -> String {
    let mut version = format!("v{}-{}\n", crate_version, GIT_VERSION);
    version.push_str(&format!("Branch: {}\n", GIT_BRANCH));
    #[allow(clippy::const_is_empty)] // Proc-macro generated.
    if !GIT_SUBMODULES.is_empty() {
        version.push_str("Submodules:\n");
        for (name, rev) in GIT_SUBMODULES {
            version.push_str(&format!("  - {}: {}\n", name, rev));
        }
    }
    version.push_str(&format!("Build timestamp: {}\n", BUILD_TIMESTAMP));
    version
}
Returns a multi-line version message that includes:
- provided crate version
- git revision
- git branch
- git submodules
- build timestamp
zkstack_cli/crates/common/src/version.rs