@@ -260,33 +260,6 @@ func GenAstFiles(quit chan int, dir string, fset *token.FileSet) <-chan *ast.Fil
260
260
return output
261
261
}
262
262
263
- func writeAstFiles (quit chan int , fset * token.FileSet , files <- chan * ast.File ) <- chan string {
264
- output := make (chan string )
265
- go func () {
266
- defer close (output )
267
- for file := range files {
268
- temp , err := os .CreateTemp (os .TempDir (), "file*.pub" )
269
- if err != nil {
270
- fmt .Println (err )
271
- return
272
- }
273
- defer temp .Close ()
274
- w := bufio .NewWriter (temp )
275
- defer func () {
276
- if w .Buffered () > 0 {
277
- w .Flush ()
278
- output <- temp .Name ()
279
- } else {
280
- os .Remove (temp .Name ())
281
- }
282
- }()
283
- pubWriter := NewPubWriter (w , fset )
284
- pubWriter .WriteFile (file )
285
- }
286
- }()
287
- return output
288
- }
289
-
290
263
func DoWritePubFile (w io.Writer , pubFile string ) {
291
264
quit := make (chan int )
292
265
defer func () {
@@ -295,21 +268,22 @@ func DoWritePubFile(w io.Writer, pubFile string) {
295
268
fset := token .NewFileSet ()
296
269
dir := filepath .Dir (pubFile )
297
270
astFiles := GenAstFiles (quit , dir , fset )
298
- files := writeAstFiles (quit , fset , astFiles )
299
- wg := sync.WaitGroup {}
300
- for file := range files {
301
- wg .Add (1 )
302
- go func (fileName string ) {
303
- defer func () {
304
- os .Remove (fileName )
305
- wg .Done ()
306
- }()
307
- b , err := os .ReadFile (fileName )
308
- if err != nil {
309
- panic (err )
271
+ var prev , next chan int
272
+ for astFile := range astFiles {
273
+ next = make (chan int )
274
+ go func (wr io.Writer , file * ast.File , prev , next chan int ) {
275
+ if prev != nil {
276
+ <- prev
310
277
}
311
- w .Write (b )
312
- }(file )
278
+ pubWriter := NewPubWriter (wr , fset )
279
+ pubWriter .WriteFile (file )
280
+ if next != nil {
281
+ close (next )
282
+ }
283
+ }(w , astFile , prev , next )
284
+ prev = next
285
+ }
286
+ if next != nil {
287
+ <- next
313
288
}
314
- wg .Wait ()
315
289
}
0 commit comments