- A Rust interface (this crate, as a "lib")
- A C interface (this crate, as a "staticlib"), with a header generated with
- A Go interface, with cgo bindings generated
lowhusk), and higher-level bindings written by hand (
See the build script in
The idea is, at first, to be able to let
valet) use components written in Rust,
like shortcut creation on Windows with proper Unicode handling, using
IShellLink COM interface.
Over time, more and more code from
libbutler could be migrated to either
valet. For example,
valet could handle all the JSON-RPC
husk could handle the itch.io REST API calls, downloads,
extraction, sandboxing, etc.
libbutler could be completely retired - connecting
husk directly. Which should be relatively effortless, as
already exposes a Rust interface.
Using husk from Go
...is awkward. Packages that use husk will never be
husk first needs to be built and installed somewhere - but it links statically, so at least the headache is only at build time.
The idea right now is to build binaries in CI, upload them to GitHub
releases, and have the build scripts for
download the binaries to a
vendor/ directory or something, with replace
directives in their
go.mod, like the sample Go binary in this repo has.