61个版本 (18个不兼容的版本)

0.18.1 2022年8月17日
0.18.0 2022年6月28日
0.17.2 2022年6月27日
0.12.1 2022年3月18日
0.0.8 2021年11月18日

#515 in Unix API

Download history 305/week @ 2024-03-31 1/week @ 2024-04-07

每月下载量 136次
2 crates 中使用

MIT 许可证

130KB
2.5K SLoC

flatpak-rs

Flatpak的Rust库。

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

此库提供了解析和转储flatpak应用程序、模块或源清单的功能。该库的目标是符合flatpak-builder支持的内容。

请参阅此库的API文档

安装

将库添加到您的Cargo.toml

flatpak = "0"

通过toml功能提供实验性的TOML支持

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

请注意,此库在crates.io上既作为flatpak又作为flatpak-rs存在别名。

使用方法

可以使用此库通过FlatpakApplicationFlatpakModuleFlatpakSource结构体来解析所有三种Flatpak清单。

从字符串解析

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);

从文件解析

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());
}

许可证

MIT

依赖项

~4–6MB
~120K SLoC