Skip to content

Commit 9f3092c

Browse files
authored
fix: errors from valid plugin setups (#20)
- No longer errors if file deletion fails - No longer errors if tests are not present - No longer errors if file is named `Plugin.swift`
1 parent 74c0e26 commit 9f3092c

File tree

2 files changed

+38
-8
lines changed

2 files changed

+38
-8
lines changed

Sources/CapacitorPluginTools/CapacitorPluginPackage.swift

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ public enum CapacitorPluginError: Error {
66
case objcFileCount(Int)
77
case objcHeaderCount(Int)
88
case oldPluginMissing
9+
case cantFindPluginSwift(String)
910

1011
public var message: String {
1112
switch self {
@@ -15,6 +16,8 @@ public enum CapacitorPluginError: Error {
1516
return "Can't find OldPlugin"
1617
case .objcHeaderCount(let numberOfFiles):
1718
return "Found \(numberOfFiles) Objective-C Header files, expected \(numberOfFiles)"
19+
case .cantFindPluginSwift(let name):
20+
return "Can't find \(name) or Plugin.swift in directory"
1821
}
1922
}
2023
}
@@ -73,12 +76,30 @@ public class CapacitorPluginPackage {
7376
return url
7477
}
7578

76-
public func findSwiftPluginFile() throws(CapacitorPluginError) -> URL {
79+
public func findSwiftPluginFile() throws(CapacitorPluginError) -> URL {
7780
guard let oldPlugin else { throw .oldPluginMissing }
7881

7982
let fileName = "\(oldPlugin.capacitorPlugin.identifier).swift"
8083

81-
return URL(filePath: fileName, directoryHint: .notDirectory, relativeTo: pluginSrcDirectoryURL)
84+
let fileURL = URL(filePath: fileName,
85+
directoryHint: .notDirectory,
86+
relativeTo: pluginSrcDirectoryURL)
87+
88+
if (try? fileURL.checkResourceIsReachable()) == true {
89+
return fileURL
90+
} else {
91+
print("Warning: file \(fileURL.path()) not found, trying Plugin.swift")
92+
}
93+
94+
let backupFileURL = URL(filePath: "Plugin.swift",
95+
directoryHint: .notDirectory,
96+
relativeTo: pluginSrcDirectoryURL)
97+
98+
if (try? backupFileURL.checkResourceIsReachable()) == true {
99+
return backupFileURL
100+
}
101+
102+
throw .cantFindPluginSwift(fileName)
82103
}
83104

84105
public func findPodspecFile() throws -> URL {

Sources/CommandLineTool/CLIFileOperations.swift

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ extension Cap2SPM {
66
if shouldBackup {
77
try fileBackup(of: fileList)
88
} else {
9-
try fileDelete(of: fileList)
9+
fileDelete(of: fileList)
1010
}
1111
}
1212

@@ -15,9 +15,13 @@ extension Cap2SPM {
1515

1616
try moveItemCreatingIntermediaryDirectories(at: package.iosSrcDirectoryURL.appending(path: "Plugin"),
1717
to: package.iosSrcDirectoryURL.appending(path: "Sources").appending(path: identifer))
18-
19-
try moveItemCreatingIntermediaryDirectories(at: package.iosSrcDirectoryURL.appending(path: "PluginTests"),
20-
to: package.iosSrcDirectoryURL.appending(path: "Tests").appending(path: "\(identifer)Tests"))
18+
19+
do {
20+
try moveItemCreatingIntermediaryDirectories(at: package.iosSrcDirectoryURL.appending(path: "PluginTests"),
21+
to: package.iosSrcDirectoryURL.appending(path: "Tests").appending(path: "\(identifer)Tests"))
22+
} catch {
23+
print("Warning: can't move PluginTests, as directory was not found")
24+
}
2125
}
2226

2327
func moveItemCreatingIntermediaryDirectories(at: URL, to: URL) throws {
@@ -37,10 +41,15 @@ extension Cap2SPM {
3741
}
3842
}
3943

40-
func fileDelete(of fileURLs: [URL]) throws {
44+
func fileDelete(of fileURLs: [URL]) {
4145
for fileURL in fileURLs {
4246
print("Deleting \(fileURL.path())...")
43-
try FileManager.default.removeItem(at: fileURL)
47+
do {
48+
try FileManager.default.removeItem(at: fileURL)
49+
} catch {
50+
print("Warning: Deleting \(fileURL.path()) failed.")
51+
}
52+
4453
}
4554
}
4655

0 commit comments

Comments
 (0)