 
 /// Returns the value for the given build setting, or an error if it could not
 /// be determined.
-private func valueForBuildSetting(setting: String, withScheme scheme: String, inProject project: ProjectLocator, configuration: String? = nil) -> ColdSignal<String> {
-	let task = xcodebuildTask([ "-showBuildSettings" ], project: project, scheme: scheme, configuration: configuration)
+private func valueForBuildSetting(setting: String, buildArguments: BuildArguments) -> ColdSignal<String> {
+	let task = xcodebuildTask("-showBuildSettings", buildArguments)
 
 	return launchTask(task)
 		.map { (data: NSData) -> String in

/// If the platform is unrecognized or could not be determined, an error will be
/// sent on the returned signal.
public func platformForScheme(scheme: String, inProject project: ProjectLocator) -> ColdSignal<Platform> {
	return valueForBuildSetting("PLATFORM_NAME", withScheme: scheme, inProject: project).tryMap(Platform.fromString)
}

/// Builds one scheme of the given project, for all supported platforms.

	}
}

/// Creates a task description for executing `xcodebuild` with the given
/// arguments.
public func xcodebuildTask(task: String, buildArguments: BuildArguments) -> TaskDescription {
	return TaskDescription(launchPath: "/usr/bin/xcrun", arguments: buildArguments.arguments + [ task ])
}

/// Sends each scheme found in the given project.
public func schemesInProject(project: ProjectLocator) -> ColdSignal<String> {
	let task = xcodebuildTask("-list", BuildArguments(project: project))

	return launchTask(task)
		.map { (data: NSData) -> String in
			return NSString(data: data, encoding: NSStringEncoding(NSUTF8StringEncoding))!
