7 releases
0.1.6 | Nov 5, 2022 |
---|---|
0.1.5 | Oct 17, 2022 |
#10 in #flipper-zero
Used in 4 crates
(2 directly)
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
Dependencies
~2.8–4MB
~82K SLoC