@@ -10,7 +10,7 @@ func routes(_ app: Application) throws {
10
10
try await req. view. render (
11
11
" index " , [
12
12
" title " : " Swift AST Explorer " ,
13
- " defaultSampleCode " : defaultSampleCode ,
13
+ " code " : sampleCode ,
14
14
" swiftVersion " : swiftVersion,
15
15
]
16
16
)
@@ -41,33 +41,35 @@ func routes(_ app: Application) throws {
41
41
return try await req. view. render (
42
42
" index " , [
43
43
" title " : " Swift AST Explorer " ,
44
- " defaultSampleCode " : content,
44
+ " code " : content,
45
45
" swiftVersion " : swiftVersion,
46
46
]
47
47
)
48
48
}
49
49
50
50
app. on ( . POST, " update " , body: . collect( maxSize: " 10mb " ) ) { ( req) -> SyntaxResponse in
51
51
let parameter = try req. content. decode ( RequestParameter . self)
52
- let options = parameter. options ?? [ ]
53
- if let branch = parameter. branch, branch != " branch_stable " {
54
- let response = try await experimentalParser ( branch: branch, arguments: [ parameter. code] + options)
55
- return try JSONDecoder ( ) . decode ( SyntaxResponse . self, from: Data ( response. stdout. utf8) )
56
- } else {
57
- return try SyntaxParser . parse ( code: parameter. code, options: options)
58
- }
52
+ let response = try await parserCommand (
53
+ branch: parameter. branch ?? " 50800 " ,
54
+ code: parameter. code,
55
+ arguments: parameter. options ?? [ ]
56
+ )
57
+ return try JSONDecoder ( ) . decode ( SyntaxResponse . self, from: Data ( response. stdout. utf8) )
59
58
}
60
59
61
- func experimentalParser ( branch: String , arguments: [ String ] ) async throws -> ( stdout: String , stderr: String ) {
60
+ func parserCommand ( branch: String , code : String , arguments: [ String ] ) async throws -> ( stdout: String , stderr: String ) {
62
61
let process = TSCBasic . Process (
63
62
arguments: [ " parser " ] + arguments,
64
63
environment: [
65
64
" NSUnbufferedIO " : " YES " ,
66
65
] ,
67
- workingDirectory: try ! AbsolutePath . init ( validating: " \( app. directory. resourcesDirectory) \( branch) /.build/debug / " )
66
+ workingDirectory: try ! AbsolutePath . init ( validating: " \( app. directory. resourcesDirectory) parsers/ \( branch) /.build/release / " )
68
67
)
69
68
70
- try process. launch ( )
69
+ let stdin = try process. launch ( )
70
+ stdin. write ( code)
71
+ stdin. flush ( )
72
+
71
73
let processResult = try await process. waitUntilExit ( )
72
74
73
75
let stdout = try processResult. utf8Output ( )
@@ -85,7 +87,7 @@ private struct RequestParameter: Decodable {
85
87
let branch : String ?
86
88
}
87
89
88
- private let defaultSampleCode = #"""
90
+ private let sampleCode = #"""
89
91
import Foundation
90
92
91
93
struct BlackjackCard {
0 commit comments