2 releases

0.40.0 Jan 13, 2023

#2213 in Development tools

GPL-3.0-only

310KB
6K SLoC

Wildland Cargo Lib

High level interface for the Cargo clients. It is built on top of the Wildland CoreX library and provides Cargo specific abstractions like "user", "device" or "sharing logic".

Bindings

Wildland Cargo Lib support bindings for the following languages:

  • Java
  • C++
  • C#
  • Python
  • Swift
  • WebAssembly (there is another SDK repository for this purpose)

Setup

Use docker images in order to generate the bindings glue code for Java, C# and Python. One can find them in ./docker directory. For C++ and Swift bindings one can simply run cargo build --features bindings and get the glue code from ./_generated_ffi_code and ./_generated_swift/ directories. It requires rust toolchain in version >1.59.0.


lib.rs:

This crate provides a high level interface for the Cargo clients. It is built on top of the Wildland CoreX library and provides Cargo specific abstractions like "user", "device" or "sharing logic".

All types and functions that are supposed to be exported from Rust library to other languages are included within [ffi] module which is used by the RustyBind crate for generating glue code and bindings to other languages.

All Cargo functionalities can be accessed via api::CargoLib object. It aggregates and gives access to API objects responsible for narrowed domains like api::UserApi.

api::CargoLib must be initialized with some set of parameters (see api::config).

Dependencies

~29–44MB
~819K SLoC