XcodeGraph is a Swift Package that contains data structures to model an Xcode projects graph. It was initially developed as part of Tuist and extracted to be Tuist-agnostic.
Note
We extracted the graph data structures from Tuist to commoditize them and make them available to other projects that might need to model and generate Xcode projects.
To install XcodeGraph
, you can add it to your project or package's Package.swift
:
let package = Package(
dependencies: [
.package(url: "https://github.com/tuist/XcodeGraph.git", .upToNextMajor(from: "0.7.0")),
],
)
XcodeGraphMapper parses .xcworkspace
or .xcodeproj
files using XcodeProj
and constructs a XcodeGraph.Graph
representing their projects, targets, and dependencies:
import XcodeGraphMapper
let mapper: XcodeGraphMapping = XcodeGraphMapper()
let path = try AbsolutePath(validating: "/path/to/MyProjectOrWorkspace")
let graph = try await mapper.map(at: path)
// You now have a Graph containing projects, targets, packages, and dependencies.*
// Example: print all target names across all projects*
for project in graph.projects.values {
for (targetName, _) in project.targets {
print("Found target: \(targetName)")
}
}
Once you have the Graph, you can explore or transform it as needed—printing targets, analyzing dependencies, generating reports, or integrating into other build tools.
Thanks goes to these wonderful people (emoji key):
Dariusz Rybicki 💻 |
Binlogo 💻 |
Filip Racki 💻 |
Gabriel Liévano 💻 |
Giovanni Filaferro 💻 |
Anton Kolchunov 💻 |
This project follows the all-contributors specification. Contributions of any kind welcome!