apple / apple/container

[Request]: Optimize MachineList command to fetch machines and default status concurrently

Open Beginner friendly
#2,212 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Swift
Stars
49.9k
Forks
1.8k
Avg merge
1d 20h
Merged PRs (30d)
22

Description

### Feature or enhancement request details

### Describe the feature / enhancement
In `Sources/ContainerCommands/Machine/MachineList.swift`, the `run()` method currently fetches the list of machines (`client.list()`) and the default machine (`client.getDefault()`) sequentially.

Using Swift's concurrency (`async let`), these two asynchronous operations can be executed in parallel to improve command performance and reduce execution latency.

### Proposed Solution
Update the `run()` function to fetch both parameters concurrently:
```swift
public func run() async throws {
let client = MachineClient()

async let machinesTask = client.list()
async let defaultMachineTask = client.getDefault()

let machines = try await machinesTask

if self.quiet {
machines.forEach { print($0.id) }
return
}

let defaultMachine = try await defaultMachineTask
try printMachines(machines: machines, format: format, defaultMachine: defaultMachine)
}

### Code of Conduct

- [x] I agree to follow this project's Code of Conduct

Contributor guide

Open the contributing guide

Research direction

Open Sources/ContainerCommands/Machine/MachineList.swift and inspect the run() method, especially the client.list() and client.getDefault() calls. Use Swift async let to start both operations concurrently while preserving the quiet and formatted-output behavior shown in the proposed solution. Done means the MachineList command fetches these values in parallel without changing its output behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
swift
Domain
cli
Issue type
Feature
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
85/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.