XcodesOrg / XcodesOrg/XcodesApp

Refactor "AppleAPI" into a separate repository

Open
#657 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
Swift
Stars
8.6k
Forks
387
Avg merge
6d 7h
Merged PRs (30d)
3

Description

Tell us how we can improve Xcodes

I've been experimenting with additional tooling around Xcode Releases and, as you're aware, logging into the Apple Developer website in order to download the .xip files is quite complicated. As I was working on it, I realized that there seem to be two different implementations of AppleAPI, duplicated in XcodesOrg/XcodesApp and XcodesOrg/xcodes. The former has the better-looking API (uses the public Combine framework, can be easily hooked into custom UI, etc), but the latter is actually usable as a package dependency.

Is your feature request related to a problem? Please describe.

I would love to see AppleAPI extracted into its own repository, ideally based on the XcodesApp implementation, so that it can be used in other tools.

What would you like to see? How would you like it to work?

Some API ideas come to mind:

  • don't include the Keychain code; instead have a "SecretsProvider" delegate that can read and write secure values
  • Base it on Combine, to remove the need for pulling in unnecessary dependencies
  • A public interface that is ObservableObject/Observable would make integration with custom UI even easier.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Compare the two AppleAPI implementations in XcodesOrg/XcodesApp and XcodesOrg/xcodes, starting with the XcodesApp version identified as having the stronger API. Define the package boundary, Combine-based public surface, and SecretsProvider replacement for Keychain; done means AppleAPI is independently consumable without unnecessary dependencies and supports the proposed UI integration.

Written by the indexing model from the issue text.

Assessment

Tech stack
swift
Domain
tooling
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.