add xcodeVersion option

This commit is contained in:
Yonas Kolb
2017-12-20 23:13:31 +08:00
parent 0a712a3adc
commit 5a30baf77e
5 changed files with 80 additions and 20 deletions
+2 -4
View File
@@ -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,
+2 -3
View File
@@ -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,
+42
View File
@@ -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
}
}
}