DropletBundleInfo

Parsed metadata of one .droplet bundle, read from its Info.plist without loading any code.

struct DropletBundleInfo

Initializers

init(bundleURL:)

init(bundleURL: URL) throws

Reads metadata from a bundle directory on disk. Opens only Contents/Info.plist; never touches the executable.

init(infoDictionary:)

init(infoDictionary: [String : Any]) throws

Parses metadata from an Info.plist dictionary.

Every gate here runs on metadata alone, before any of the bundle's code is loaded. Since DroppyKit 0.3.0 that includes the three rules DropletInfoPlistKey had only been declaring: the id's charset, the package type, and the bundle identifier.

Properties

bundleIdentifier

let bundleIdentifier: String

Bundle identifier (CFBundleIdentifier). Always app.getdroppy.droplet.<dropletID>; the parser refuses anything else.

dropletID

let dropletID: DropletID

The droplet's stable identifier.

kitABI

let kitABI: Int

DroppyKit ABI generation the bundle was built against.

kitMinAPI

let kitMinAPI: SemanticVersion

Minimum DroppyKit API version the bundle requires.

minAppVersion

let minAppVersion: String?

Minimum host app version, when declared.

name

let name: String

User-visible name (CFBundleName, falling back to the id).

permissions

let permissions: [DropletPermission]

Every capability string the manifest declared, in declaration order.

Includes strings this SDK build does not recognise: DropletPermission is open, so an unknown string round-trips as itself rather than being dropped. Hosts treat anything outside known as not granted, which is how a bundle built against a newer SDK loads with less capability instead of refusing to load.

The 0.2.x split into permissions plus a separate unknownPermissions array is gone; recover it with permissions.filter { !$0.isKnown } when you need it.

principalClassName

let principalClassName: String?

Principal class name (NSPrincipalClass), when present.

replacesBuiltIn

let replacesBuiltIn: String?

Built-in extension this bundle shadows during dual-mode, when any.

urlAliases

let urlAliases: [String]

Deep-link aliases.

version

let version: String

Bundle version (CFBundleShortVersionString).