mirror of
https://github.com/yonaskolb/XcodeGen.git
synced 2026-03-18 20:02:25 +00:00
add xcodeVersion option
This commit is contained in:
@@ -8,7 +8,6 @@ import ProjectSpec
|
||||
public class PBXProjGenerator {
|
||||
|
||||
let spec: ProjectSpec
|
||||
let currentXcodeVersion: String
|
||||
|
||||
let proj: PBXProj
|
||||
let sourceGenerator: SourceGenerator
|
||||
@@ -27,8 +26,7 @@ public class PBXProjGenerator {
|
||||
return spec.options.carthageBuildPath ?? "Carthage/Build"
|
||||
}
|
||||
|
||||
public init(spec: ProjectSpec, currentXcodeVersion: String) {
|
||||
self.currentXcodeVersion = currentXcodeVersion
|
||||
public init(spec: ProjectSpec) {
|
||||
self.spec = spec
|
||||
proj = PBXProj(objectVersion: 46, rootObject: referenceGenerator.generate(PBXProject.self, spec.name))
|
||||
sourceGenerator = SourceGenerator(spec: spec, referenceGenerator: referenceGenerator) { _ in }
|
||||
@@ -111,7 +109,7 @@ public class PBXProjGenerator {
|
||||
|
||||
sortGroups(group: mainGroup)
|
||||
|
||||
let projectAttributes: [String: Any] = ["LastUpgradeCheck": currentXcodeVersion].merged(spec.attributes)
|
||||
let projectAttributes: [String: Any] = ["LastUpgradeCheck": spec.xcodeVersion].merged(spec.attributes)
|
||||
let root = PBXProject(name: spec.name,
|
||||
reference: proj.rootObject,
|
||||
buildConfigurationList: buildConfigList.reference,
|
||||
|
||||
@@ -8,7 +8,6 @@ import ProjectSpec
|
||||
public class ProjectGenerator {
|
||||
|
||||
let spec: ProjectSpec
|
||||
let currentXcodeVersion = "0900"
|
||||
|
||||
public init(spec: ProjectSpec) {
|
||||
self.spec = spec
|
||||
@@ -24,7 +23,7 @@ public class ProjectGenerator {
|
||||
|
||||
public func generateProject() throws -> XcodeProj {
|
||||
try spec.validate()
|
||||
let pbxProjGenerator = PBXProjGenerator(spec: spec, currentXcodeVersion: currentXcodeVersion)
|
||||
let pbxProjGenerator = PBXProjGenerator(spec: spec)
|
||||
let pbxProject = try pbxProjGenerator.generate()
|
||||
let workspace = try generateWorkspace()
|
||||
let sharedData = try generateSharedData(pbxProject: pbxProject)
|
||||
@@ -87,7 +86,7 @@ public class ProjectGenerator {
|
||||
let archiveAction = XCScheme.ArchiveAction(buildConfiguration: scheme.archive?.config ?? defaultReleaseConfig.name, revealArchiveInOrganizer: true)
|
||||
|
||||
return XCScheme(name: scheme.name,
|
||||
lastUpgradeVersion: currentXcodeVersion,
|
||||
lastUpgradeVersion: spec.xcodeVersion,
|
||||
version: "1.3",
|
||||
buildAction: buildAction,
|
||||
testAction: testAction,
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
import Foundation
|
||||
import ProjectSpec
|
||||
|
||||
extension ProjectSpec {
|
||||
|
||||
var xcodeVersion: String {
|
||||
return XCodeVersion.parse(options.xcodeVersion ?? "9.0")
|
||||
}
|
||||
}
|
||||
|
||||
public struct XCodeVersion {
|
||||
|
||||
public static func parse(_ version: String) -> String {
|
||||
if version.contains(".") {
|
||||
let parts = version.split(separator: ".").map(String.init)
|
||||
var string = ""
|
||||
let major = parts[0]
|
||||
if major.count == 1 {
|
||||
string = "0\(major)"
|
||||
} else {
|
||||
string = major
|
||||
}
|
||||
|
||||
let minor = parts[1]
|
||||
string += minor
|
||||
|
||||
if parts.count > 2 {
|
||||
let patch = parts[2]
|
||||
string += patch
|
||||
} else {
|
||||
string += "0"
|
||||
}
|
||||
return string
|
||||
} else if version.count == 2 {
|
||||
return "\(version)00"
|
||||
} else if version.count == 1 {
|
||||
return "0\(version)00"
|
||||
} else {
|
||||
return version
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user