1
1
import Foundation
2
+ import Logging
2
3
import SwiftCLI
3
4
import WAKit
4
- import Willow
5
+
6
+ private let logger = Logger ( label: " com.WAKit.CLI " )
5
7
6
8
final class RunCommand : Command {
7
9
let name = " run "
@@ -11,33 +13,33 @@ final class RunCommand: Command {
11
13
let functionName = Parameter ( )
12
14
let arguments = OptionalCollectedParameter ( )
13
15
14
- lazy var logger : Logger = {
15
- Logger (
16
- logLevels: isVerbose. value ? [ . error, . warn, . event, . info] : [ . error, . warn] ,
17
- writers: [ ConsoleWriter ( ) ]
18
- )
19
- } ( )
20
-
21
16
func execute( ) throws {
22
17
let isVerbose = self . isVerbose. value
18
+
19
+ LoggingSystem . bootstrap {
20
+ var handler = StreamLogHandler . standardOutput ( label: $0)
21
+ handler. logLevel = isVerbose ? . info : . warning
22
+ return handler
23
+ }
24
+
23
25
let path = self . path. value
24
26
let functionName = self . functionName. value
25
27
26
28
guard let fileHandle = FileHandle ( forReadingAtPath: path) else {
27
- logger. errorMessage ( " File \" \( path) \" could not be opened " )
29
+ logger. error ( " File \" \( path) \" could not be opened " )
28
30
return
29
31
}
30
32
defer { fileHandle. closeFile ( ) }
31
33
32
34
let stream = FileHandleStream ( fileHandle: fileHandle)
33
35
34
- logger. eventMessage ( " Started to parse module " )
36
+ logger. info ( " Started to parse module " )
35
37
36
38
let ( module, parseTime) = try measure ( if: isVerbose) {
37
39
try WASMParser . parse ( stream: stream)
38
40
}
39
41
40
- logger. eventMessage ( " Ended to parse module: \( parseTime) " )
42
+ logger. info ( " Ended to parse module: \( parseTime) " )
41
43
42
44
let runtime = Runtime ( )
43
45
let moduleInstance = try runtime. instantiate ( module: module, externalValues: [ ] )
@@ -57,13 +59,13 @@ final class RunCommand: Command {
57
59
parameters. append ( parameter)
58
60
}
59
61
60
- logger. eventMessage ( " Started invoking function \" \( functionName) \" with parameters: \( parameters) " )
62
+ logger. info ( " Started invoking function \" \( functionName) \" with parameters: \( parameters) " )
61
63
62
64
let ( results, invokeTime) = try measure ( if: isVerbose) {
63
65
try runtime. invoke ( moduleInstance, function: functionName, with: parameters)
64
66
}
65
67
66
- logger. infoMessage ( " Ended invoking function \" \( functionName) \" : \( invokeTime) " )
68
+ logger. info ( " Ended invoking function \" \( functionName) \" : \( invokeTime) " )
67
69
68
70
stdout <<< results. description
69
71
}
0 commit comments