apple_bundles

Struct DirectoryBundle

Source
pub struct DirectoryBundle { /* private fields */ }
Expand description

An Apple bundle backed by a filesystem/directory.

Instances represent a type-agnostic bundle (macOS application bundle, iOS application bundle, framework bundles, etc).

Implementations§

Source§

impl DirectoryBundle

Source

pub fn new_from_path(directory: &Path) -> Result<Self>

Open an existing bundle from a filesystem path.

The specified path should be the root directory of the bundle.

This will validate that the directory is a bundle and error if not. Validation is limited to locating an Info.plist file, which is required for all bundle types.

Source

pub fn resolve_path(&self, path: impl AsRef<Path>) -> PathBuf

Resolve the absolute path to a file in the bundle.

Source

pub fn root_dir(&self) -> &Path

The root directory of this bundle.

Source

pub fn name(&self) -> &str

The on-disk name of this bundle.

This is effectively the directory name of the bundle. Contains the .app, .framework, etc suffix.

Source

pub fn shallow(&self) -> bool

Whether this is a shallow bundle.

If false, content is likely in a Contents directory.

Source

pub fn info_plist_path(&self) -> PathBuf

Obtain the path to the Info.plist file.

Source

pub fn info_plist(&self) -> &Dictionary

Obtain the parsed Info.plist file.

Source

pub fn info_plist_key_string(&self, key: &str) -> Result<Option<String>>

Obtain an Info.plist key as a String.

Will return None if the specified key doesn’t exist. Errors if the key value is not a string.

Source

pub fn package_type(&self) -> BundlePackageType

Obtain the type of bundle.

Source

pub fn display_name(&self) -> Result<Option<String>>

Obtain the bundle display name.

This retrieves the value of CFBundleDisplayName from the Info.plist.

Source

pub fn identifier(&self) -> Result<Option<String>>

Obtain the bundle identifier.

This retrieves CFBundleIdentifier from the Info.plist.

Source

pub fn version(&self) -> Result<Option<String>>

Obtain the bundle version string.

This retrieves CFBundleVersion from the Info.plist.

Source

pub fn main_executable(&self) -> Result<Option<String>>

Obtain the name of the bundle’s main executable file.

This retrieves CFBundleExecutable from the Info.plist.

Source

pub fn icon_files(&self) -> Result<Option<Vec<String>>>

Obtain filenames of bundle icon files.

This retrieves CFBundleIconFiles from the Info.plist.

Source

pub fn files( &self, traverse_nested: bool, ) -> Result<Vec<DirectoryBundleFile<'_>>>

Obtain all files within this bundle.

The iteration order is deterministic.

traverse_nested defines whether to traverse into nested bundles.

Source

pub fn files_manifest(&self, traverse_nested: bool) -> Result<FileManifest>

Obtain all files in this bundle as a FileManifest.

Source

pub fn nested_bundles(&self, descend: bool) -> Result<Vec<(String, Self)>>

Obtain all nested bundles within this one.

This walks the directory tree for directories that can be parsed as bundles.

If descend is true, we will descend into nested bundles and recursively emit nested bundles. Otherwise we stop traversal once a bundle is encountered.

Source

pub fn framework_versions(&self) -> Result<Vec<String>>

Resolve the versions present within a framework.

Does not emit versions that are symlinks.

Source

pub fn is_framework_version(&self) -> bool

Whether this bundle is a version within a framework bundle.

This is true if we are a framework bundle under a Versions directory.

Trait Implementations§

Source§

impl Clone for DirectoryBundle

Source§

fn clone(&self) -> DirectoryBundle

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for DirectoryBundle

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.