FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

tuist/XcodeProj: 📝 Read, update and write your Xcode projects · GitHub

Latest commit

 

History

2,469 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

XcodeProj

XcodeProj is a library written in Swift for parsing and working with Xcode projects. It's heavily inspired by CocoaPods XcodeProj and xcode.


Projects Using XcodeProj

Project Repository
ProjLint github.com/JamitLabs/ProjLint
rules_xcodeproj github.com/buildbuddy-io/rules_xcodeproj
Rugby github.com/swiftyfinch/Rugby
Sourcery github.com/krzysztofzablocki/Sourcery
Tuist github.com/tuist/tuist
XcodeGen github.com/yonaskolb/XcodeGen
xspm gitlab.com/Pyroh/xspm
Privacy Manifest github.com/stelabouras/privacy-manifest
XcodeProjectCLI github.com/wojciech-kulik/XcodeProjectCLI

If you are also leveraging XcodeProj in your project, feel free to open a PR to include it in the list above.

Installation

Swift Package Manager

Add the dependency in your Package.swift file:

let package = Package(
    name: "myproject",
    dependencies: [
        .package(url: "https://github.com/tuist/XcodeProj.git", .upToNextMajor(from: "8.12.0")),
    ],
    targets: [
        .target(
            name: "myproject",
            dependencies: ["XcodeProj"]),
        ]
)

Scripting

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 ~> 8.8.0
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.

References 📚

Contributing

  1. Git clone the repository git@github.com:tuist/xcodeproj.git.
  2. Open Package.swift with Xcode.

License

XcodeProj is released under the MIT license. See LICENSE for details.

Contributors ✨

Thanks goes to these wonderful people (emoji key):


Joseph Colicchio

🤔

deatondg

🤔

Dan Fleming

💻

Sascha Schwabbauer

🤔

Marcin Iwanicki

🚧

Adam Khazi

🚧

Elliott Williams

💻

Muukii

🖋

Yuya Oka

💻

Keith Smiley

🖋

Ian Leitch

💻

Daniil Subbotin

💻

Florentin Bekier

💻

Vadim Smal

🐛

freddi(Yuki Aki)

💻

Kristopher Jackson

💻

Jake Prickett

💻

Jake Adams

💻

matsuji

💻

Bogdan Belogurov

💻

Chuck Grindel

💻

Michael McGuire

💻

C-凡

💻

Maxwell Elliott

💻

Brentley Jones

💻

Teameh

💻

Johannes Ebeling

💻

baegteun

📖

Alex Kovács

📖

Christoffer Winterkvist

💻

Timothy Costa

💻

Mary

💻

Md. Ibrahim Hassan

💻

tatagrigory

💻

Ruslan Alikhamov

💻

Ladislas de Toldi

💻

Matt Massicotte

💻

Артем Ворхлик

💻

Jaewon-Yun

💻

Mike Gerasymenko

💻

Filip Racki

💻

Kelvin Harron

💻

George Navarro

💻

Maxim

💻

Bryan Summersett

💻

Mikhail

💻

Michael

💻

This project follows the all-contributors specification. Contributions of any kind welcome!

About

📝 Read, update and write your Xcode projects

Topics

Resources

Code of conduct

Stars

2.2k stars

Watchers

52 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages


Back | FazBrowse Home | New Git URL