flatpak-rs

Crates.ioflatpak-rs
lib.rsflatpak-rs
version0.18.1
sourcesrc
created_at2021-10-19 20:41:11.709184
updated_at2022-08-17 23:44:06.251751
descriptionFlatpak library for Rust.
homepage
repositoryhttps://github.com/louib/flatpak-rs
max_upload_size
id467531
size127,143
(louib)

documentation

README

flatpak-rs

Flatpak library for Rust.

Tests status Code formatting Documentation dependency status Crates.io version License file

This library offers functions to parse and dump flatpak application, module or source manifests. The goal of the library is to be compliant with what flatpak-builder supports.

See the API documentation for this library.

Installation

Add the library to your Cargo.toml:

flatpak = "0"

Experimental TOML support is available via the toml feature:

flatpak = { version = "0", features = ["toml"] }

Note that this library is aliased as both flatpak and flatpak-rs on crates.io.

Usage

All three denominations of Flatpak manifests can be parsed using this library, using the FlatpakApplication, FlatpakModule and FlatpakSource structs.

Parse from a string

use flatpak_rs::application::FlatpakApplication;
use flatpak_rs::format::FlatpakManifestFormat;

let manifest = r###"
    app-id: net.louib.flatpak-rs
    runtime: org.gnome.Platform
    runtime-version: "3.36"
    sdk: org.gnome.Sdk
    command: flatpak-rs
    tags: ["nightly"]
    modules:
      -
        name: "flatpak-rs"
        buildsystem: simple
        cleanup: [ "*" ]
        config-opts: []
        sources:
          -
            type: git
            url: https://github.com/louib/flatpak-rs.git
            branch: master
      -
        "shared-modules/linux-audio/lv2.json"
"###;

let application = FlatpakApplication::parse(FlatpakManifestFormat::YAML, manifest).unwrap();

assert_eq!(&application.app_id, "net.louib.flatpak-rs");
assert_eq!(application.modules.len(), 2 as usize);

println!("Parsed application manifest for {}.", &application.app_id);

Parse from a file

use std::env;

use flatpak_rs::application::FlatpakApplication;

fn main() {
    let args: Vec<String> = env::args().collect();
    if args.len() < 2 {
        eprintln!("Please provide a flatpak application manifest to parse.");
        return;
    }
    let manifest_path = &args[1];

    let application = FlatpakApplication::load_from_file(manifest_path.clone()).unwrap();
    println!("Parsed application manifest for {}.", &application.get_id());
}

License

MIT

Commit count: 192

cargo fmt