Skip to content

Commit cf22f92

Browse files
authored
Merge pull request #23 from lvsti/strip-default-values
Strip default values
2 parents c37e808 + e1c3880 commit cf22f92

File tree

2 files changed

+23
-10
lines changed

2 files changed

+23
-10
lines changed

Bridgecraft/GenerateCommand.swift

+21-9
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,17 @@ import SourceKittenFramework
1111
import XcodeEdit
1212

1313
extension GenerateCommand {
14-
static func execute(verbose: Bool,
15-
assumeNonnull: Bool,
14+
static func execute(assumeNonnull: Bool,
15+
keepDefaults: Bool,
16+
verbose: Bool,
1617
sdkOverride: [String],
1718
destOverride: [String],
1819
outputPath: [String],
1920
origProjectPath: String,
2021
targetName: String) {
21-
let cmd = GenerateCommand(verbose: verbose,
22-
assumeNonnull: assumeNonnull,
22+
let cmd = GenerateCommand(assumeNonnull: assumeNonnull,
23+
keepDefaults: keepDefaults,
24+
verbose: verbose,
2325
sdkOverride: sdkOverride,
2426
destOverride: destOverride,
2527
outputPath: outputPath,
@@ -36,21 +38,24 @@ struct GenerateCommand {
3638
private let preprocessedURL: URL
3739
private let outputFileURL: URL?
3840

39-
private let verbose: Bool
4041
private let assumeNonnull: Bool
42+
private let keepDefaults: Bool
43+
private let verbose: Bool
4144
private let sdkOverride: String?
4245
private let destOverride: String?
4346
private let targetName: String
4447

45-
init(verbose: Bool,
46-
assumeNonnull: Bool,
48+
init(assumeNonnull: Bool,
49+
keepDefaults: Bool,
50+
verbose: Bool,
4751
sdkOverride: [String],
4852
destOverride: [String],
4953
outputPath: [String],
5054
origProjectPath: String,
5155
targetName: String) {
52-
self.verbose = verbose
5356
self.assumeNonnull = assumeNonnull
57+
self.keepDefaults = keepDefaults
58+
self.verbose = verbose
5459
self.sdkOverride = sdkOverride.first
5560
self.destOverride = destOverride.first
5661
self.targetName = targetName
@@ -102,11 +107,14 @@ struct GenerateCommand {
102107
// generate interface with sourcekitten
103108
let interface = try generateSwiftInterface(withCompilerFlags: compilerFlags)
104109

110+
// strip default values
111+
let cleanedInterface = keepDefaults ? interface : stripDefaultValues(from: interface)
112+
105113
// clean up
106114
cleanUp()
107115

108116
// write results
109-
try writeGeneratedInterfaceToFile(interface: interface)
117+
try writeGeneratedInterfaceToFile(interface: cleanedInterface)
110118
}
111119
catch {
112120
// clean up
@@ -350,6 +358,10 @@ struct GenerateCommand {
350358
return srcText
351359
}
352360

361+
private func stripDefaultValues(from interface: String) -> String {
362+
return interface.replacingOccurrences(of: " = nil", with: "")
363+
}
364+
353365
private func writeGeneratedInterfaceToFile(interface: String) throws {
354366
let header =
355367
"""

Bridgecraft/main.swift

+2-1
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,9 @@ import Foundation
1212
let version = "0.3.0"
1313

1414
let generate = command(
15-
Flag("verbose", description: "outputs all terminal commands and their results"),
1615
Flag("assume-nonnull", description: "assume that all headers have been audited for nullability"),
16+
Flag("keep-defaults", description: "do not strip default values (typically in the form of '= nil') from the generated header"),
17+
Flag("verbose", description: "outputs all terminal commands and their results"),
1718
Options<String>("sdk", default: [], count: 1, description: "override the SDK used for the build (see xcodebuild -sdk)"),
1819
Options<String>("destination", default: [], count: 1, description: "override the destination device used for the build (see xcodebuild -destination)"),
1920
Options<String>("output", default: [], flag: "o", count: 1, description: "write the generated interface into the given file instead of the standard output"),

0 commit comments

Comments
 (0)