xcodeproj is a library written in Swift for parsing and working with Xcode projects. It's heavily inspired in CocoaPods XcodeProj and xcode.
This project is a fork and evolution from xcproj
Project | Repository |
---|---|
Tuist | github.com/tuist/tuist |
Sourcery | github.com/krzysztofzablocki/Sourcery |
ProjLint | github.com/JamitLabs/ProjLint |
XcodeGen | github.com/yonaskolb/XcodeGen |
If you are also leveraging xcodeproj in your project, feel free to open a PR to include it in the list above.
Add the dependency in your Package.swift
file:
let package = Package(
name: "myproject",
dependencies: [
.package(url: "https://github.com/tuist/xcodeproj.git", .upToNextMajor(from: "6.5.0")),
],
targets: [
.target(
name: "myproject",
dependencies: ["xcodeproj"]),
]
)
Only macOS
# Cartfile
github "tuist/xcodeproj" ~> 6.5.0
pod 'xcodeproj', '~> 6.5.0'
Using swift-sh
you can automate project-tasks using scripts, for example we
can make a script that keeps a projectโs version key in sync with the current
git tag that represents the projectโs version:
#!/usr/bin/swift sh
import Foundation
import xcodeproj // @tuist ~> 6.5
import PathKit
guard CommandLine.arguments.count == 3 else {
let arg0 = Path(CommandLine.arguments[0]).lastComponent
fputs("usage: \(arg0) <project> <new-version>\n", stderr)
exit(1)
}
let projectPath = Path(CommandLine.arguments[1])
let newVersion = CommandLine.arguments[2]
let xcodeproj = try XcodeProj(path: projectPath)
let key = "CURRENT_PROJECT_VERSION"
for conf in xcodeproj.pbxproj.buildConfigurations where conf.buildSettings[key] != nil {
conf.buildSettings[key] = newVersion
}
try xcodeproj.write(path: projectPath)
You could then store this in your repository, for example at
scripts/set-project-version
and then run it:
$ scripts/set-project-version ./App.xcodeproj 1.2.3
$ git add App.xcodeproj
$ git commit -m "Bump version"
$ git tag 1.2.3
Future adaption could easily include determining the version and bumping it
automatically. If so, we recommend using a library that provides a Version
object.
You can check out the documentation on the following link. The documentation is automatically generated in every release by using Jazzy from Realm.
- Xcode Project File Format
- A brief look at the Xcode project format
- pbexplorer
- pbxproj identifiers
- mob-pbxproj
- Xcodeproj
- Nanaimo
- Facebook Buck
- Swift Package Manager - Xcodeproj
- Git clone the repository
[email protected]:tuist/xcodeproj.git
. - Generate xcodeproj with
swift package generate-xcodeproj
. - Open
xcodeproj.xcodeproj
.
xcodeproj is released under the MIT license. See LICENSE for details.
Tuist is a proud supporter of the Software Freedom Conservacy