diff --git a/CHANGELOG.md b/CHANGELOG.md
index 013c5a2..4218da1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,9 @@
* Fixed `swiftlint` warnings in generated color extensions.
[Roman Laitarenko](https://github.com/evil159)
[#32](https://github.com/SwiftGen/templates/pull/32)
+* The storyboards macOS swift3 template was missing the "current target" module ignore code.
+ [@djbe](https://github.com/djbe)
+ [#27](https://github.com/SwiftGen/templates/issues/27)
### Breaking Changes
diff --git a/Contexts/Storyboards-macOS/all.plist b/Contexts/Storyboards-macOS/all.plist
index 491ea9e..5f167c1 100644
--- a/Contexts/Storyboards-macOS/all.plist
+++ b/Contexts/Storyboards-macOS/all.plist
@@ -4,10 +4,12 @@
extraImports
+ FadeSegue
PrefsWindowController
modules
+ FadeSegue
PrefsWindowController
param
@@ -159,9 +161,7 @@
customClass
-
- customModule
-
+ FadeSegue
identifier
public
diff --git a/Contexts/Storyboards-macOS/customname.plist b/Contexts/Storyboards-macOS/customname.plist
index 1375b18..2d1cd1d 100644
--- a/Contexts/Storyboards-macOS/customname.plist
+++ b/Contexts/Storyboards-macOS/customname.plist
@@ -4,10 +4,12 @@
extraImports
+ FadeSegue
PrefsWindowController
modules
+ FadeSegue
PrefsWindowController
param
@@ -159,9 +161,7 @@
customClass
-
- customModule
-
+ FadeSegue
identifier
public
diff --git a/Contexts/Storyboards-macOS/messages.plist b/Contexts/Storyboards-macOS/messages.plist
index 91a3863..b646ce6 100644
--- a/Contexts/Storyboards-macOS/messages.plist
+++ b/Contexts/Storyboards-macOS/messages.plist
@@ -3,9 +3,13 @@
extraImports
-
+
+ FadeSegue
+
modules
-
+
+ FadeSegue
+
param
sceneEnumName
@@ -113,9 +117,7 @@
customClass
-
- customModule
-
+ FadeSegue
identifier
public
diff --git a/Fixtures/Storyboards-macOS/Message.storyboard b/Fixtures/Storyboards-macOS/Message.storyboard
index eff504b..fd1a404 100644
--- a/Fixtures/Storyboards-macOS/Message.storyboard
+++ b/Fixtures/Storyboards-macOS/Message.storyboard
@@ -82,7 +82,7 @@
-
+
diff --git a/Fixtures/stub-env/Modules/FadeSegue.swift b/Fixtures/stub-env/Modules/FadeSegue.swift
new file mode 100644
index 0000000..7632fe2
--- /dev/null
+++ b/Fixtures/stub-env/Modules/FadeSegue.swift
@@ -0,0 +1,4 @@
+import AppKit
+
+public class FadeSegue: NSStoryboardSegue {
+}
diff --git a/Rakefile b/Rakefile
index f1fdf31..358f400 100644
--- a/Rakefile
+++ b/Rakefile
@@ -34,7 +34,7 @@ namespace :output do
Utils.print_header 'Compile output modules'
# macOS
- modules = ['PrefsWindowController']
+ modules = ['FadeSegue', 'PrefsWindowController']
modules.each do |m|
Utils.print_info "Compiling module #{m}… (macos)"
compile_module(m, :macosx, task)
diff --git a/Tests/Expected/Storyboards-macOS/default-context-all-customname.swift b/Tests/Expected/Storyboards-macOS/default-context-all-customname.swift
index b11dddb..1c9f6a2 100644
--- a/Tests/Expected/Storyboards-macOS/default-context-all-customname.swift
+++ b/Tests/Expected/Storyboards-macOS/default-context-all-customname.swift
@@ -2,6 +2,7 @@
import Foundation
import Cocoa
+import FadeSegue
import PrefsWindowController
// swiftlint:disable file_length
diff --git a/Tests/Expected/Storyboards-macOS/default-context-all-ignore-module.swift b/Tests/Expected/Storyboards-macOS/default-context-all-ignore-module.swift
new file mode 100644
index 0000000..1778795
--- /dev/null
+++ b/Tests/Expected/Storyboards-macOS/default-context-all-ignore-module.swift
@@ -0,0 +1,171 @@
+// Generated using SwiftGen, by O.Halligon — https://github.com/SwiftGen/SwiftGen
+
+import Foundation
+import Cocoa
+import PrefsWindowController
+
+// swiftlint:disable file_length
+// swiftlint:disable line_length
+// swiftlint:disable type_body_length
+
+protocol StoryboardSceneType {
+ static var storyboardName: String { get }
+}
+
+extension StoryboardSceneType {
+ static func storyboard() -> NSStoryboard {
+ return NSStoryboard(name: self.storyboardName, bundle: NSBundle(forClass: BundleToken.self))
+ }
+
+ static func initialController() -> AnyObject {
+ guard let controller = storyboard().instantiateInitialController()
+ else {
+ fatalError("Failed to instantiate initialViewController for \(self.storyboardName)")
+ }
+ return controller
+ }
+}
+
+extension StoryboardSceneType where Self: RawRepresentable, Self.RawValue == String {
+ func controller() -> AnyObject {
+ return Self.storyboard().instantiateControllerWithIdentifier(self.rawValue)
+ }
+ static func controller(identifier: Self) -> AnyObject {
+ return identifier.controller()
+ }
+}
+
+protocol StoryboardSegueType: RawRepresentable { }
+
+extension NSWindowController {
+ func performSegue(segue: S, sender: AnyObject? = nil) {
+ performSegueWithIdentifier(segue.rawValue, sender: sender)
+ }
+}
+
+extension NSViewController {
+ func performSegue(segue: S, sender: AnyObject? = nil) {
+ performSegueWithIdentifier(segue.rawValue, sender: sender)
+ }
+}
+
+enum StoryboardScene {
+ enum AdditionalImport: String, StoryboardSceneType {
+ static let storyboardName = "AdditionalImport"
+
+ case PrivateScene = "private"
+ static func instantiatePrivate() -> PrefsWindowController.DBPrefsWindowController {
+ guard let vc = StoryboardScene.AdditionalImport.PrivateScene.controller() as? PrefsWindowController.DBPrefsWindowController
+ else {
+ fatalError("ViewController 'private' is not of the expected class PrefsWindowController.DBPrefsWindowController.")
+ }
+ return vc
+ }
+ }
+ enum Anonymous: StoryboardSceneType {
+ static let storyboardName = "Anonymous"
+ }
+ enum Dependency: String, StoryboardSceneType {
+ static let storyboardName = "Dependency"
+
+ case DependentScene = "Dependent"
+ static func instantiateDependent() -> NSViewController {
+ guard let vc = StoryboardScene.Dependency.DependentScene.controller() as? NSViewController
+ else {
+ fatalError("ViewController 'Dependent' is not of the expected class NSViewController.")
+ }
+ return vc
+ }
+ }
+ enum Message: String, StoryboardSceneType {
+ static let storyboardName = "Message"
+
+ case MessageDetailsScene = "MessageDetails"
+ static func instantiateMessageDetails() -> NSViewController {
+ guard let vc = StoryboardScene.Message.MessageDetailsScene.controller() as? NSViewController
+ else {
+ fatalError("ViewController 'MessageDetails' is not of the expected class NSViewController.")
+ }
+ return vc
+ }
+
+ case MessageListScene = "MessageList"
+ static func instantiateMessageList() -> NSViewController {
+ guard let vc = StoryboardScene.Message.MessageListScene.controller() as? NSViewController
+ else {
+ fatalError("ViewController 'MessageList' is not of the expected class NSViewController.")
+ }
+ return vc
+ }
+
+ case MessageListFooterScene = "MessageListFooter"
+ static func instantiateMessageListFooter() -> NSViewController {
+ guard let vc = StoryboardScene.Message.MessageListFooterScene.controller() as? NSViewController
+ else {
+ fatalError("ViewController 'MessageListFooter' is not of the expected class NSViewController.")
+ }
+ return vc
+ }
+
+ case MessagesTabScene = "MessagesTab"
+ static func instantiateMessagesTab() -> CustomTabViewController {
+ guard let vc = StoryboardScene.Message.MessagesTabScene.controller() as? CustomTabViewController
+ else {
+ fatalError("ViewController 'MessagesTab' is not of the expected class CustomTabViewController.")
+ }
+ return vc
+ }
+
+ case SplitMessagesScene = "SplitMessages"
+ static func instantiateSplitMessages() -> NSSplitViewController {
+ guard let vc = StoryboardScene.Message.SplitMessagesScene.controller() as? NSSplitViewController
+ else {
+ fatalError("ViewController 'SplitMessages' is not of the expected class NSSplitViewController.")
+ }
+ return vc
+ }
+
+ case WindowCtrlScene = "WindowCtrl"
+ static func instantiateWindowCtrl() -> NSWindowController {
+ guard let vc = StoryboardScene.Message.WindowCtrlScene.controller() as? NSWindowController
+ else {
+ fatalError("ViewController 'WindowCtrl' is not of the expected class NSWindowController.")
+ }
+ return vc
+ }
+ }
+ enum Placeholder: String, StoryboardSceneType {
+ static let storyboardName = "Placeholder"
+
+ case DependentScene = "Dependent"
+ static func instantiateDependent() -> NSControllerPlaceholder {
+ guard let vc = StoryboardScene.Placeholder.DependentScene.controller() as? NSControllerPlaceholder
+ else {
+ fatalError("ViewController 'Dependent' is not of the expected class NSControllerPlaceholder.")
+ }
+ return vc
+ }
+
+ case WindowScene = "Window"
+ static func instantiateWindow() -> NSWindowController {
+ guard let vc = StoryboardScene.Placeholder.WindowScene.controller() as? NSWindowController
+ else {
+ fatalError("ViewController 'Window' is not of the expected class NSWindowController.")
+ }
+ return vc
+ }
+ }
+}
+
+enum StoryboardSegue {
+ enum Message: String, StoryboardSegueType {
+ case Embed
+ case Modal
+ case Popover
+ case Sheet
+ case Show
+ case Public = "public"
+ }
+}
+
+private final class BundleToken {}
diff --git a/Tests/Expected/Storyboards-macOS/default-context-all.swift b/Tests/Expected/Storyboards-macOS/default-context-all.swift
index 1778795..2d9ca24 100644
--- a/Tests/Expected/Storyboards-macOS/default-context-all.swift
+++ b/Tests/Expected/Storyboards-macOS/default-context-all.swift
@@ -2,6 +2,7 @@
import Foundation
import Cocoa
+import FadeSegue
import PrefsWindowController
// swiftlint:disable file_length
diff --git a/Tests/Expected/Storyboards-macOS/lowercase-context-all-customname.swift b/Tests/Expected/Storyboards-macOS/lowercase-context-all-customname.swift
index 41a0d05..e6e0e7c 100644
--- a/Tests/Expected/Storyboards-macOS/lowercase-context-all-customname.swift
+++ b/Tests/Expected/Storyboards-macOS/lowercase-context-all-customname.swift
@@ -2,6 +2,7 @@
import Foundation
import Cocoa
+import FadeSegue
import PrefsWindowController
// swiftlint:disable file_length
diff --git a/Tests/Expected/Storyboards-macOS/lowercase-context-all-ignore-module.swift b/Tests/Expected/Storyboards-macOS/lowercase-context-all-ignore-module.swift
new file mode 100644
index 0000000..ed15336
--- /dev/null
+++ b/Tests/Expected/Storyboards-macOS/lowercase-context-all-ignore-module.swift
@@ -0,0 +1,171 @@
+// Generated using SwiftGen, by O.Halligon — https://github.com/SwiftGen/SwiftGen
+
+import Foundation
+import Cocoa
+import PrefsWindowController
+
+// swiftlint:disable file_length
+// swiftlint:disable line_length
+// swiftlint:disable type_body_length
+
+protocol StoryboardSceneType {
+ static var storyboardName: String { get }
+}
+
+extension StoryboardSceneType {
+ static func storyboard() -> NSStoryboard {
+ return NSStoryboard(name: self.storyboardName, bundle: NSBundle(forClass: BundleToken.self))
+ }
+
+ static func initialController() -> AnyObject {
+ guard let controller = storyboard().instantiateInitialController()
+ else {
+ fatalError("Failed to instantiate initialViewController for \(self.storyboardName)")
+ }
+ return controller
+ }
+}
+
+extension StoryboardSceneType where Self: RawRepresentable, Self.RawValue == String {
+ func controller() -> AnyObject {
+ return Self.storyboard().instantiateControllerWithIdentifier(self.rawValue)
+ }
+ static func controller(identifier: Self) -> AnyObject {
+ return identifier.controller()
+ }
+}
+
+protocol StoryboardSegueType: RawRepresentable { }
+
+extension NSWindowController {
+ func performSegue(segue: S, sender: AnyObject? = nil) {
+ performSegueWithIdentifier(segue.rawValue, sender: sender)
+ }
+}
+
+extension NSViewController {
+ func performSegue(segue: S, sender: AnyObject? = nil) {
+ performSegueWithIdentifier(segue.rawValue, sender: sender)
+ }
+}
+
+enum StoryboardScene {
+ enum AdditionalImport: String, StoryboardSceneType {
+ static let storyboardName = "AdditionalImport"
+
+ case privateScene = "private"
+ static func instantiatePrivate() -> PrefsWindowController.DBPrefsWindowController {
+ guard let vc = StoryboardScene.AdditionalImport.privateScene.controller() as? PrefsWindowController.DBPrefsWindowController
+ else {
+ fatalError("ViewController 'private' is not of the expected class PrefsWindowController.DBPrefsWindowController.")
+ }
+ return vc
+ }
+ }
+ enum Anonymous: StoryboardSceneType {
+ static let storyboardName = "Anonymous"
+ }
+ enum Dependency: String, StoryboardSceneType {
+ static let storyboardName = "Dependency"
+
+ case dependentScene = "Dependent"
+ static func instantiateDependent() -> NSViewController {
+ guard let vc = StoryboardScene.Dependency.dependentScene.controller() as? NSViewController
+ else {
+ fatalError("ViewController 'Dependent' is not of the expected class NSViewController.")
+ }
+ return vc
+ }
+ }
+ enum Message: String, StoryboardSceneType {
+ static let storyboardName = "Message"
+
+ case messageDetailsScene = "MessageDetails"
+ static func instantiateMessageDetails() -> NSViewController {
+ guard let vc = StoryboardScene.Message.messageDetailsScene.controller() as? NSViewController
+ else {
+ fatalError("ViewController 'MessageDetails' is not of the expected class NSViewController.")
+ }
+ return vc
+ }
+
+ case messageListScene = "MessageList"
+ static func instantiateMessageList() -> NSViewController {
+ guard let vc = StoryboardScene.Message.messageListScene.controller() as? NSViewController
+ else {
+ fatalError("ViewController 'MessageList' is not of the expected class NSViewController.")
+ }
+ return vc
+ }
+
+ case messageListFooterScene = "MessageListFooter"
+ static func instantiateMessageListFooter() -> NSViewController {
+ guard let vc = StoryboardScene.Message.messageListFooterScene.controller() as? NSViewController
+ else {
+ fatalError("ViewController 'MessageListFooter' is not of the expected class NSViewController.")
+ }
+ return vc
+ }
+
+ case messagesTabScene = "MessagesTab"
+ static func instantiateMessagesTab() -> CustomTabViewController {
+ guard let vc = StoryboardScene.Message.messagesTabScene.controller() as? CustomTabViewController
+ else {
+ fatalError("ViewController 'MessagesTab' is not of the expected class CustomTabViewController.")
+ }
+ return vc
+ }
+
+ case splitMessagesScene = "SplitMessages"
+ static func instantiateSplitMessages() -> NSSplitViewController {
+ guard let vc = StoryboardScene.Message.splitMessagesScene.controller() as? NSSplitViewController
+ else {
+ fatalError("ViewController 'SplitMessages' is not of the expected class NSSplitViewController.")
+ }
+ return vc
+ }
+
+ case windowCtrlScene = "WindowCtrl"
+ static func instantiateWindowCtrl() -> NSWindowController {
+ guard let vc = StoryboardScene.Message.windowCtrlScene.controller() as? NSWindowController
+ else {
+ fatalError("ViewController 'WindowCtrl' is not of the expected class NSWindowController.")
+ }
+ return vc
+ }
+ }
+ enum Placeholder: String, StoryboardSceneType {
+ static let storyboardName = "Placeholder"
+
+ case dependentScene = "Dependent"
+ static func instantiateDependent() -> NSControllerPlaceholder {
+ guard let vc = StoryboardScene.Placeholder.dependentScene.controller() as? NSControllerPlaceholder
+ else {
+ fatalError("ViewController 'Dependent' is not of the expected class NSControllerPlaceholder.")
+ }
+ return vc
+ }
+
+ case windowScene = "Window"
+ static func instantiateWindow() -> NSWindowController {
+ guard let vc = StoryboardScene.Placeholder.windowScene.controller() as? NSWindowController
+ else {
+ fatalError("ViewController 'Window' is not of the expected class NSWindowController.")
+ }
+ return vc
+ }
+ }
+}
+
+enum StoryboardSegue {
+ enum Message: String, StoryboardSegueType {
+ case Embed
+ case Modal
+ case Popover
+ case Sheet
+ case Show
+ case Public = "public"
+ }
+}
+
+private final class BundleToken {}
diff --git a/Tests/Expected/Storyboards-macOS/lowercase-context-all.swift b/Tests/Expected/Storyboards-macOS/lowercase-context-all.swift
index ed15336..24c665c 100644
--- a/Tests/Expected/Storyboards-macOS/lowercase-context-all.swift
+++ b/Tests/Expected/Storyboards-macOS/lowercase-context-all.swift
@@ -2,6 +2,7 @@
import Foundation
import Cocoa
+import FadeSegue
import PrefsWindowController
// swiftlint:disable file_length
diff --git a/Tests/Expected/Storyboards-macOS/swift3-context-all-customname.swift b/Tests/Expected/Storyboards-macOS/swift3-context-all-customname.swift
index 4d18365..81ac903 100644
--- a/Tests/Expected/Storyboards-macOS/swift3-context-all-customname.swift
+++ b/Tests/Expected/Storyboards-macOS/swift3-context-all-customname.swift
@@ -2,6 +2,7 @@
import Foundation
import Cocoa
+import FadeSegue
import PrefsWindowController
// swiftlint:disable file_length
diff --git a/Tests/Expected/Storyboards-macOS/swift3-context-all-ignore-module.swift b/Tests/Expected/Storyboards-macOS/swift3-context-all-ignore-module.swift
new file mode 100644
index 0000000..3e0dea3
--- /dev/null
+++ b/Tests/Expected/Storyboards-macOS/swift3-context-all-ignore-module.swift
@@ -0,0 +1,171 @@
+// Generated using SwiftGen, by O.Halligon — https://github.com/SwiftGen/SwiftGen
+
+import Foundation
+import Cocoa
+import PrefsWindowController
+
+// swiftlint:disable file_length
+// swiftlint:disable line_length
+// swiftlint:disable type_body_length
+
+protocol StoryboardSceneType {
+ static var storyboardName: String { get }
+}
+
+extension StoryboardSceneType {
+ static func storyboard() -> NSStoryboard {
+ return NSStoryboard(name: self.storyboardName, bundle: Bundle(for: BundleToken.self))
+ }
+
+ static func initialController() -> Any {
+ guard let controller = storyboard().instantiateInitialController()
+ else {
+ fatalError("Failed to instantiate initialViewController for \(self.storyboardName)")
+ }
+ return controller
+ }
+}
+
+extension StoryboardSceneType where Self: RawRepresentable, Self.RawValue == String {
+ func controller() -> Any {
+ return Self.storyboard().instantiateController(withIdentifier: self.rawValue)
+ }
+ static func controller(identifier: Self) -> Any {
+ return identifier.controller()
+ }
+}
+
+protocol StoryboardSegueType: RawRepresentable { }
+
+extension NSWindowController {
+ func performSegue(segue: S, sender: Any? = nil) where S.RawValue == String {
+ performSegue(withIdentifier: segue.rawValue, sender: sender)
+ }
+}
+
+extension NSViewController {
+ func performSegue(segue: S, sender: Any? = nil) where S.RawValue == String {
+ performSegue(withIdentifier: segue.rawValue, sender: sender)
+ }
+}
+
+enum StoryboardScene {
+ enum AdditionalImport: String, StoryboardSceneType {
+ static let storyboardName = "AdditionalImport"
+
+ case privateScene = "private"
+ static func instantiatePrivate() -> PrefsWindowController.DBPrefsWindowController {
+ guard let vc = StoryboardScene.AdditionalImport.privateScene.controller() as? PrefsWindowController.DBPrefsWindowController
+ else {
+ fatalError("ViewController 'private' is not of the expected class PrefsWindowController.DBPrefsWindowController.")
+ }
+ return vc
+ }
+ }
+ enum Anonymous: StoryboardSceneType {
+ static let storyboardName = "Anonymous"
+ }
+ enum Dependency: String, StoryboardSceneType {
+ static let storyboardName = "Dependency"
+
+ case dependentScene = "Dependent"
+ static func instantiateDependent() -> NSViewController {
+ guard let vc = StoryboardScene.Dependency.dependentScene.controller() as? NSViewController
+ else {
+ fatalError("ViewController 'Dependent' is not of the expected class NSViewController.")
+ }
+ return vc
+ }
+ }
+ enum Message: String, StoryboardSceneType {
+ static let storyboardName = "Message"
+
+ case messageDetailsScene = "MessageDetails"
+ static func instantiateMessageDetails() -> NSViewController {
+ guard let vc = StoryboardScene.Message.messageDetailsScene.controller() as? NSViewController
+ else {
+ fatalError("ViewController 'MessageDetails' is not of the expected class NSViewController.")
+ }
+ return vc
+ }
+
+ case messageListScene = "MessageList"
+ static func instantiateMessageList() -> NSViewController {
+ guard let vc = StoryboardScene.Message.messageListScene.controller() as? NSViewController
+ else {
+ fatalError("ViewController 'MessageList' is not of the expected class NSViewController.")
+ }
+ return vc
+ }
+
+ case messageListFooterScene = "MessageListFooter"
+ static func instantiateMessageListFooter() -> NSViewController {
+ guard let vc = StoryboardScene.Message.messageListFooterScene.controller() as? NSViewController
+ else {
+ fatalError("ViewController 'MessageListFooter' is not of the expected class NSViewController.")
+ }
+ return vc
+ }
+
+ case messagesTabScene = "MessagesTab"
+ static func instantiateMessagesTab() -> CustomTabViewController {
+ guard let vc = StoryboardScene.Message.messagesTabScene.controller() as? CustomTabViewController
+ else {
+ fatalError("ViewController 'MessagesTab' is not of the expected class CustomTabViewController.")
+ }
+ return vc
+ }
+
+ case splitMessagesScene = "SplitMessages"
+ static func instantiateSplitMessages() -> NSSplitViewController {
+ guard let vc = StoryboardScene.Message.splitMessagesScene.controller() as? NSSplitViewController
+ else {
+ fatalError("ViewController 'SplitMessages' is not of the expected class NSSplitViewController.")
+ }
+ return vc
+ }
+
+ case windowCtrlScene = "WindowCtrl"
+ static func instantiateWindowCtrl() -> NSWindowController {
+ guard let vc = StoryboardScene.Message.windowCtrlScene.controller() as? NSWindowController
+ else {
+ fatalError("ViewController 'WindowCtrl' is not of the expected class NSWindowController.")
+ }
+ return vc
+ }
+ }
+ enum Placeholder: String, StoryboardSceneType {
+ static let storyboardName = "Placeholder"
+
+ case dependentScene = "Dependent"
+ static func instantiateDependent() -> NSControllerPlaceholder {
+ guard let vc = StoryboardScene.Placeholder.dependentScene.controller() as? NSControllerPlaceholder
+ else {
+ fatalError("ViewController 'Dependent' is not of the expected class NSControllerPlaceholder.")
+ }
+ return vc
+ }
+
+ case windowScene = "Window"
+ static func instantiateWindow() -> NSWindowController {
+ guard let vc = StoryboardScene.Placeholder.windowScene.controller() as? NSWindowController
+ else {
+ fatalError("ViewController 'Window' is not of the expected class NSWindowController.")
+ }
+ return vc
+ }
+ }
+}
+
+enum StoryboardSegue {
+ enum Message: String, StoryboardSegueType {
+ case embed = "Embed"
+ case modal = "Modal"
+ case popover = "Popover"
+ case sheet = "Sheet"
+ case show = "Show"
+ case `public`
+ }
+}
+
+private final class BundleToken {}
diff --git a/Tests/Expected/Storyboards-macOS/swift3-context-all.swift b/Tests/Expected/Storyboards-macOS/swift3-context-all.swift
index 3e0dea3..20efa6d 100644
--- a/Tests/Expected/Storyboards-macOS/swift3-context-all.swift
+++ b/Tests/Expected/Storyboards-macOS/swift3-context-all.swift
@@ -2,6 +2,7 @@
import Foundation
import Cocoa
+import FadeSegue
import PrefsWindowController
// swiftlint:disable file_length
diff --git a/Tests/TemplatesTests/StoryboardsMacOSTests.swift b/Tests/TemplatesTests/StoryboardsMacOSTests.swift
index 3e19727..a35fda7 100644
--- a/Tests/TemplatesTests/StoryboardsMacOSTests.swift
+++ b/Tests/TemplatesTests/StoryboardsMacOSTests.swift
@@ -6,24 +6,43 @@
import StencilSwiftKit
import XCTest
+import StencilSwiftKit
class StoryboardsMacOSTests: XCTestCase {
enum Contexts {
static let all = ["empty", "all"]
}
- // generate variations to test customname generation
+ // generate variations to test target module matching and custom enum names
let variations: VariationGenerator = { name, context in
guard name == "all" else { return [(context: context, suffix: "")] }
- return [
- (context: context,
- suffix: ""),
- (context: try StencilContext.enrich(context: context,
- parameters: ["sceneEnumName=XCTStoryboardsScene",
- "segueEnumName=XCTStoryboardsSegue"]),
- suffix: "-customname")
- ]
+ do {
+ return [
+ (context: context,
+ suffix: ""),
+ (context: try StencilContext.enrich(context: context,
+ parameters: ["sceneEnumName=XCTStoryboardsScene",
+ "segueEnumName=XCTStoryboardsSegue"]),
+ suffix: "-customname"),
+ (context: try StencilContext.enrich(context: context,
+ parameters: [],
+ environment: ["PRODUCT_MODULE_NAME": "Test"]),
+ suffix: ""),
+ (context: try StencilContext.enrich(context: context,
+ parameters: [],
+ environment: ["PRODUCT_MODULE_NAME": "FadeSegue"]),
+ suffix: "-ignore-module"),
+ (context: try StencilContext.enrich(context: context,
+ parameters: ["module=Test"]),
+ suffix: ""),
+ (context: try StencilContext.enrich(context: context,
+ parameters: ["module=FadeSegue"]),
+ suffix: "-ignore-module")
+ ]
+ } catch {
+ fatalError("Unable to create context variations")
+ }
}
func testDefault() {
diff --git a/templates/storyboards-osx-swift3.stencil b/templates/storyboards-osx-swift3.stencil
index dda814e..0ff99cb 100644
--- a/templates/storyboards-osx-swift3.stencil
+++ b/templates/storyboards-osx-swift3.stencil
@@ -4,7 +4,9 @@
import Foundation
import Cocoa
{% for module in modules %}
+{% if module != env.PRODUCT_MODULE_NAME and module != param.module %}
import {{module}}
+{% endif %}
{% endfor %}
{% if storyboards %}