Crates.io | apple-bundle |
lib.rs | apple-bundle |
version | 0.1.4 |
source | src |
created_at | 2021-05-27 12:14:22.426549 |
updated_at | 2022-08-03 22:43:15.113958 |
description | Apple BundleResources serializer and deserializer for Rust |
homepage | |
repository | https://github.com/dodorare/apple-bundle-rs |
max_upload_size | |
id | 402693 |
size | 436,057 |
AppleBundleResources serializer and deserializer for Rust. This library will also likely continue to stay up to date with the official Apple Bundle Resources specification as changes happen.
# Cargo.toml
[dependencies]
apple-bundle = "*"
Create Info.plist
by yourself:
let properties = InfoPlist {
localization: Localization {
bundle_development_region: Some("en".to_owned()),
..Default::default()
},
launch: Launch {
bundle_executable: Some("test".to_owned()),
..Default::default()
},
identification: Identification {
bundle_identifier: "com.test.test-id".to_owned(),
..Default::default()
},
bundle_version: BundleVersion {
bundle_version: Some("1".to_owned()),
bundle_info_dictionary_version: Some("1.0".to_owned()),
bundle_short_version_string: Some("1.0".to_owned()),
..Default::default()
},
naming: Naming {
bundle_name: Some("Test".to_owned()),
..Default::default()
},
categorization: Categorization {
bundle_package_type: Some("APPL".to_owned()),
..Default::default()
},
launch_interface: LaunchInterface {
launch_storyboard_name: Some("LaunchScreen".to_owned()),
..Default::default()
},
styling: Styling {
requires_full_screen: Some(false),
..Default::default()
},
orientation: Orientation {
supported_interface_orientations: Some(vec![
InterfaceOrientation::Portrait,
InterfaceOrientation::PortraitUpsideDown,
InterfaceOrientation::LandscapeLeft,
InterfaceOrientation::LandscapeRight,
]),
..Default::default()
},
..Default::default()
};
// Create Info.plist file
let file_path = dir.path().join(PLIST_FILE_NAME);
let file = std::fs::File::create(file_path).unwrap();
// Write to Info.plist file
plist::to_writer_xml(file, &properties).unwrap();
Or parse any Info.plist
file:
pub const PLIST_FILE_EXAMPLE: &str = r#"<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleIdentifier</key>
<string>com.test.test-id</string>
<key>CFBundleName</key>
<string>Test</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>1.0</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIRequiresFullScreen</key>
<false />
<key>CFBundleExecutable</key>
<string>test</string>
</dict>
</plist>"#;
// Read from bytes
let properties: InfoPlist = plist::from_bytes(&PLIST_FILE_EXAMPLE.as_bytes()).unwrap();
// Or from file
let file_path = "/path/to/Info.plist";
let properties: InfoPlist = plist::from_file(&file_path).unwrap();
This project is licensed under Apache License, Version 2.0, (LICENSE or http://www.apache.org/licenses/LICENSE-2.0).
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in toml-rs by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.