Shared device-selection policy for tasks that can change device state.
A named device is always explicit. Broad selection keeps physical
devices behind :all_physical; :all_devices means development
emulators and simulators. Combined :all_devices and
:all_physical selects every connected device. With no scope
flags, exactly one non-physical device may be selected automatically;
multiple development devices are an ambiguity error.
Summary
Functions
Filter devices by the identifiers accepted by MobDev.Device.match_id?/2.
Resolve a device snapshot into the exact targets for one task run.
Select devices from an already-discovered snapshot.
Types
Functions
@spec filter_by_id([MobDev.Device.t()], [String.t()]) :: [MobDev.Device.t()]
Filter devices by the identifiers accepted by MobDev.Device.match_id?/2.
@spec resolve([MobDev.Device.t()], [String.t()], keyword()) :: {:ok, [MobDev.Device.t()]} | {:error, selection_error(), map()}
Resolve a device snapshot into the exact targets for one task run.
@spec select([MobDev.Device.t()], [String.t()], keyword()) :: [MobDev.Device.t()]
Select devices from an already-discovered snapshot.
Precedence is named devices, both broad flags, development devices, physical devices, then safe single-development-device auto-selection.