Skip to content

Migrate CocoaPods → Swift Package Manager (target: Swift port Phase 1) #508

Description

@schuyler

Context

CocoaPods is in maintenance mode, and the current dependency set includes three pods from a patched external spec fork (see the vendoring issue and survey §4.1). The dependency overhaul is what makes SPM possible: the post-overhaul set is SPM-native, the current set mostly isn't.

Dependency Removed by SPM story
hoedown (patched) v3000.1.1 parser swap (#77) replaced by cmark-gfm (SPM or vendored C target)
PAPreferences v3000.1.2 (#188) replaced by in-repo wrapper
LibYAML (patched) + YAML-framework Swift port Phase 1 Yams (SPM)
handlebars-objc (patched) Swift port Phase 1 (#201) drop — see #201 discussion (one template; string composition suffices)
MASPreferences Swift port Phase 4 native replacement
M13OrderedDictionary #187 removed
Sparkle (disabled) #129 re-enable Sparkle 2 is SPM-native
GBCli, JJPluralForm evaluate tiny; vendor or replace

Work (at Swift port Phase 1, alongside the bridging-header setup)

  • Move remaining dependencies to SPM packages in the Xcode project
  • Replace the CocoaPods build phases (Manifest.lock check, resources script) and the Gemfile/Bundler layer
  • Update setup.sh and .github/actions/setup-macdown (Ruby/bundler steps go away)
  • Keep vendored C (peg-markdown-highlight until v3001.1.x; cmark-gfm if vendored) as local SPM targets or xcframeworks

Interim policy (now → Phase 1)

No new pods. Every milestone that deletes a pod is measured progress toward this issue.

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions