49次发布 (16次重大变更)

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

#341 in Unix API

Download history 9/week @ 2024-03-12 37/week @ 2024-03-19 8/week @ 2024-03-26 50/week @ 2024-04-02 4/week @ 2024-04-16 1/week @ 2024-05-14 19/week @ 2024-05-21 26/week @ 2024-05-28 12/week @ 2024-06-04 10/week @ 2024-06-11 80/week @ 2024-06-18 17/week @ 2024-06-25

每月下载 122
用于 anda

MIT 许可证

125KB
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