@@ -3,19 +3,10 @@ import CapacitorPluginSyntaxTools
33import JavascriptPackageTools
44
55public enum CapacitorPluginError : Error {
6- case objcFileCount( Int )
7- case objcHeaderCount( Int )
8- case oldPluginMissing
96 case cantFindPluginSwift( String )
107
118 public var message : String {
129 switch self {
13- case . objcFileCount( let numberOfFiles) :
14- return " Found \( numberOfFiles) Objective-C *.m files, expected \( numberOfFiles) "
15- case . oldPluginMissing:
16- return " Can't find OldPlugin "
17- case . objcHeaderCount( let numberOfFiles) :
18- return " Found \( numberOfFiles) Objective-C Header files, expected \( numberOfFiles) "
1910 case . cantFindPluginSwift( let name) :
2011 return " Can't find \( name) or Plugin.swift in directory "
2112 }
@@ -41,6 +32,7 @@ public class CapacitorPluginPackage {
4132 private var oldPlugin : OldPlugin ?
4233 private var packageJSONParser : PackageJSONParser
4334
35+ public var identifier : String ?
4436 public var plugin : CapacitorPlugin ? {
4537 oldPlugin? . capacitorPlugin
4638 }
@@ -63,56 +55,62 @@ public class CapacitorPluginPackage {
6355 files = try fileManager. contentsOfDirectory ( at: pluginSrcDirectoryURL, includingPropertiesForKeys: nil )
6456 }
6557
66- public func findObjCPluginFile( ) throws -> URL {
58+ public func findObjCPluginFile( ) -> URL ? {
6759 let mfiles = files. filter { $0. absoluteString. hasSuffix ( " .m " ) }
6860
69- guard mfiles. count == 1 , let url = mfiles. first else { throw CapacitorPluginError . objcFileCount ( mfiles. count) }
70-
71- oldPlugin = try OldPlugin ( at: url)
72-
73- return url
61+ if mfiles. count == 1 , let url = mfiles. first {
62+ return url
63+ }
64+ return nil
7465 }
7566
7667 public func parseObjCPluginFile( at url: URL ) throws {
7768 oldPlugin = try OldPlugin ( at: url)
69+ identifier = oldPlugin? . capacitorPlugin. identifier
7870 }
7971
80- public func findObjCHeaderFile( ) throws -> URL {
72+ public func findObjCHeaderFile( ) -> URL ? {
8173 let headerFiles = files. filter { $0. absoluteString. hasSuffix ( " .h " ) }
82- guard headerFiles. count == 1 , let url = headerFiles. first else { throw CapacitorPluginError . objcFileCount ( headerFiles. count) }
83-
84- return url
74+ if headerFiles. count == 1 , let url = headerFiles. first {
75+ return url
76+ }
77+ return nil
8578 }
8679
8780 public func findSwiftPluginFile( ) throws ( CapacitorPluginError) -> URL {
88- guard let oldPlugin else { throw . oldPluginMissing }
81+ var fileName = " "
82+ if let identifier {
83+ fileName = " \( identifier) .swift "
84+ let fileURL = URL ( filePath: fileName,
85+ directoryHint: . notDirectory,
86+ relativeTo: pluginSrcDirectoryURL)
8987
90- let fileName = " \( oldPlugin. capacitorPlugin. identifier) .swift "
88+ if ( try ? fileURL. checkResourceIsReachable ( ) ) == true {
89+ return fileURL
90+ } else {
91+ print ( " Warning: file \( fileURL. path ( ) ) not found, trying Plugin.swift " )
92+ }
9193
92- let fileURL = URL ( filePath: fileName ,
93- directoryHint: . notDirectory,
94- relativeTo: pluginSrcDirectoryURL)
94+ let backupFileURL = URL ( filePath: " Plugin.swift " ,
95+ directoryHint: . notDirectory,
96+ relativeTo: pluginSrcDirectoryURL)
9597
96- if ( try ? fileURL. checkResourceIsReachable ( ) ) == true {
97- return fileURL
98+ if ( try ? backupFileURL. checkResourceIsReachable ( ) ) == true {
99+ return backupFileURL
100+ }
98101 } else {
99- print ( " Warning: file \( fileURL. path ( ) ) not found, trying Plugin.swift " )
100- }
101-
102- let backupFileURL = URL ( filePath: " Plugin.swift " ,
103- directoryHint: . notDirectory,
104- relativeTo: pluginSrcDirectoryURL)
105-
106- if ( try ? backupFileURL. checkResourceIsReachable ( ) ) == true {
107- return backupFileURL
102+ let swiftFiles = files. filter { $0. absoluteString. hasSuffix ( " Plugin.swift " ) }
103+ if swiftFiles. count == 1 , let url = swiftFiles. first {
104+ return url
105+ }
108106 }
109107
110108 throw . cantFindPluginSwift( fileName)
111109 }
112110
113111 public func findSwiftTestsPluginFile( ) -> URL ? {
114- if let oldPlugin {
115- let fileName = " \( oldPlugin . capacitorPlugin . identifier) Tests.swift "
112+ if let identifier {
113+ let fileName = " \( identifier) Tests.swift "
116114 let fileURL = iosSrcDirectoryURL. appending ( path: " PluginTests " ) . appending ( path: fileName)
117115 if ( try ? fileURL. checkResourceIsReachable ( ) ) == true {
118116 return fileURL
@@ -154,4 +152,8 @@ public class CapacitorPluginPackage {
154152
155153 try packageJSONParser. writePackageJSON ( )
156154 }
155+
156+ public func setIdentifier( from fileURL: URL ) throws {
157+ identifier = try IdentifierExtractor . getIdentifier ( from: fileURL)
158+ }
157159}
0 commit comments