7 releases

0.1.6 Nov 5, 2022
0.1.5 Oct 17, 2022

#10 in #flipper-zero


Used in 4 crates (2 directly)

MIT license

41KB
722 lines

Flipper Zero Application Manifest Generator

Builds FAM from one of two possible sources:

  • Metadata in the crate manifest (usually Cargo.toml)
  • Flipper.toml near by crate manifest

Uses cargo metadata.

Usage

Cargo.toml:

[package]
build = "build.rs"
# ...

[package.metadata.fam]
main = "init"
name = "Hello, Flipper"            # optional, default is crate name
# id = "hello-flipper"             # optional, default is crate name
# type = "FlipperAppType.EXTERNAL" # optional, default is FlipperAppType.EXTERNAL
# icon-file = "icon_10px.png"      # optional, path relative to the root of crate
# category = "Misc"                # optional, default Misc

[build-dependencies.fam-build]
package = "flipper0-fam-build"
version = "*"

build.rs:

fn main() {
	let fam = fam_build::manifest().unwrap();
	let path = fam.save_to_out_dir().unwrap();
	// or...   fam.save_to(some other path)

	println!("Exported FAM path: {}", path.display());
}

Entry-point main

Metadata field package.metadata.fam.main is required by default.

But it's optional if feature optional_entry_point enabled. That optionality needed in cases when this used in couple with macro crate that also writes to manifest. So you can omit package.metadata.fam.main in that case.

Examples


Official format documentation.

Dependencies

~2.8–4MB
~82K SLoC