45
45
import java .nio .charset .StandardCharsets ;
46
46
import java .nio .file .Path ;
47
47
import java .nio .file .Paths ;
48
+ import java .nio .file .StandardOpenOption ;
48
49
import java .time .Duration ;
49
- import java .util .List ;
50
- import java .util .Objects ;
51
- import java .util .Optional ;
52
- import java .util .Set ;
50
+ import java .util .*;
53
51
import java .util .concurrent .CompletableFuture ;
54
52
import java .util .concurrent .atomic .AtomicReference ;
55
53
import java .util .stream .Collectors ;
@@ -477,6 +475,7 @@ protected void injectMapData(WurstGui gui, Optional<File> testMap, CompilationRe
477
475
String mapScriptName ;
478
476
if (runArgs .isLua ()) {
479
477
mapScriptName = "war3map.lua" ;
478
+ injectExternalLuaFiles (result .script );
480
479
} else {
481
480
mapScriptName = "war3map.j" ;
482
481
}
@@ -490,4 +489,42 @@ protected void injectMapData(WurstGui gui, Optional<File> testMap, CompilationRe
490
489
mpqEditor .insertFile (mapScriptName , result .script );
491
490
}
492
491
}
492
+
493
+ private void injectExternalLuaFiles (File script ) {
494
+ File luaDir ;
495
+ try {
496
+ luaDir = new File (workspaceRoot .getFile (), "lua" );
497
+ } catch (FileNotFoundException e ) {
498
+ throw new RuntimeException ("Cannot get build dir" , e );
499
+ }
500
+ if (luaDir .exists ()) {
501
+ File [] children = luaDir .listFiles ();
502
+ if (children != null ) {
503
+ Arrays .stream (children ).forEach (child -> {
504
+ try {
505
+ byte [] bytes = java .nio .file .Files .readAllBytes (child .toPath ());
506
+ if (child .getName ().startsWith ("pre_" )) {
507
+ byte [] existingBytes = java .nio .file .Files .readAllBytes (script .toPath ());
508
+ java .nio .file .Files .write (
509
+ script .toPath (),
510
+ bytes );
511
+ java .nio .file .Files .write (
512
+ script .toPath (),
513
+ existingBytes ,
514
+ StandardOpenOption .APPEND );
515
+ } else {
516
+ java .nio .file .Files .write (
517
+ script .toPath (),
518
+ bytes ,
519
+ StandardOpenOption .APPEND );
520
+ }
521
+ } catch (IOException e ) {
522
+ throw new RuntimeException (e );
523
+ }
524
+ });
525
+ }
526
+ }
527
+ }
528
+
529
+
493
530
}
0 commit comments