Skip to content

casonadams/zbus-xml-gen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

zbus-xml-gen

Generate type-safe Rust code from D-Bus XML introspection files.

This library and CLI help you create zbus client proxies and server traits automatically from your D-Bus XML interface files.

Features

  • Library: Easily generate Rust trait code for zbus proxies and servers from XML, all in memory.
  • CLI: Generate code from XML files or stdin with a simple command.

Library Usage

Add to your Cargo.toml:

[dependencies]
zbus-xml-gen = "0.1"

Generate Client Proxies

use zbus_xml_gen::generate_client_proxies_from_xml;

let xml = r#"
<node>
  <interface name="org.example.Foo">
    <method name="Bar"><arg name="x" type="i" direction="in"/></method>
    <property name="status" type="s" access="read"/>
  </interface>
</node>
"#;

let code = generate_client_proxies_from_xml(xml);
println!("{}", code);
// -> Generates Rust traits usable as zbus client proxies

Generate Server Traits

use zbus_xml_gen::generate_server_interface_from_xml;

let xml = r#"
<node>
  <interface name="org.example.Foo">
    <method name="Bar"><arg name="x" type="i" direction="in"/></method>
  </interface>
</node>
"#;

let code = generate_server_interface_from_xml(xml);
println!("{}", code);
// -> Generates Rust traits for implementing D-Bus servers

CLI Usage

Enable the CLI with the cli feature:

[dependencies]
zbus-xml-gen = { version = "0.1", features = ["cli"] }

Build and Run

cargo run --features cli -- --help

Usage:

zbus-xml-gen [--server] [input.xml]
  • input.xml – Path to a D-Bus introspection XML file. If not given, reads from stdin.
  • --server – Generate server trait code (default: client proxy code).

Examples:

# Generate client proxy traits from file
zbus-xml-gen interfaces.xml

# Generate server traits from stdin
cat interfaces.xml | zbus-xml-gen --server

Why?

  • Don’t hand-write D-Bus interface bindings for Rust and zbus.
  • Generate type-safe, idiomatic Rust code from your XML interface definitions automatically.

About

Generate Rust code for zbus from D-Bus XML introspection files — both client and server traits.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages