1
1
import DangerShellExecutor
2
2
import Foundation
3
3
import Logger
4
+ import Version
4
5
5
6
public struct ScriptManager {
6
7
public struct Config {
@@ -10,7 +11,8 @@ public struct ScriptManager {
10
11
11
12
public init ( prefix: String = " package: " ,
12
13
file: String = " Dangerplugins " ,
13
- major: String = " ~> " ) {
14
+ major: String = " ~> " )
15
+ {
14
16
dependencyPrefix = prefix
15
17
dependencyFile = file
16
18
majorVersionPrefix = major
@@ -22,6 +24,7 @@ public struct ScriptManager {
22
24
case invalidInlineDependencyURL( String )
23
25
case failedToAddDependencyScript( String )
24
26
case scriptNotFound( String )
27
+ case invalidDangerSwiftVersion
25
28
}
26
29
27
30
private let config = Config ( )
@@ -36,7 +39,8 @@ public struct ScriptManager {
36
39
public init ( folder: String ,
37
40
dangerSwiftVersion: String ,
38
41
packageManager: PackageManager ,
39
- logger: Logger ) throws {
42
+ logger: Logger ) throws
43
+ {
40
44
self . dangerSwiftVersion = dangerSwiftVersion
41
45
self . folder = folder
42
46
self . logger = logger
@@ -56,6 +60,10 @@ public struct ScriptManager {
56
60
}
57
61
58
62
private func script( fromPath path: String ) throws -> Script {
63
+ guard let dangerSwiftVersion = Version ( dangerSwiftVersion) else {
64
+ throw Errors . invalidDangerSwiftVersion
65
+ }
66
+
59
67
let identifier = scriptIdentifier ( fromPath: path)
60
68
let folder = try createFolderIfNeededForScript ( withIdentifier: identifier, filePath: path)
61
69
let script = Script ( name: path. nameExcludingExtension, folder: folder, logger: logger)
@@ -95,9 +103,9 @@ public struct ScriptManager {
95
103
96
104
let moduleFolder = try sourcesFolder. createSubfolder ( withName: filePath. nameExcludingExtension)
97
105
98
- FileManager . default. createFile ( atPath: moduleFolder. appendingPath ( " main.swift " ) ,
99
- contents: Data ( try String ( contentsOfFile: filePath) . utf8) ,
100
- attributes: [ : ] )
106
+ try FileManager . default. createFile ( atPath: moduleFolder. appendingPath ( " main.swift " ) ,
107
+ contents: Data ( String ( contentsOfFile: filePath) . utf8) ,
108
+ attributes: [ : ] )
101
109
102
110
return scriptFolder
103
111
}
@@ -215,7 +223,8 @@ public final class Script {
215
223
func executeSwiftCommand( _ command: String ,
216
224
onFolder folder: String ? = nil ,
217
225
arguments: [ String ] = [ ] ,
218
- executor: ShellExecutor ) throws -> String {
226
+ executor: ShellExecutor ) throws -> String
227
+ {
219
228
func resolveSwiftPath( ) -> String {
220
229
#if os(Linux)
221
230
return " swift "
0 commit comments