This library provides a strongly typed API on top of the VirtualBox command line tools.
Why work against the command line tools?
Generally, creating an API wrapper on top of a command line tools should be avoided (at least in cases where the tool's output is parsed and is not guaranteed to be stable). But the gist of the backstory is:
- This crate started as a bunch of
/bin/sh
script, which were slowly ported to Rust as part of moving a build system to Rust. - The raw VirtualBox API uses COM, which is a Windows technology. On other platforms it apparently uses XPCOM, but it was not clear that there were any publicly available (and easy to use) XPCOM crates.
Versions
The VirtualBox command line tools don't guarantee stability (except in a few cases, which explicitly are "machine readable"?), so users must be mindful of which version the crate is able to parse.
Generally speaking, this crate will track "the latest version" of VirtualBox.
Future
The design of vboxhelper is intended to, as far as is possible, hide the actual implementation to allow it to transition to a proper integration in the future, without requiring changes to applications.