@@ -1431,14 +1431,24 @@ def process_call_code(
1431
1431
state : InterpreterState , scope : ScopeType , block : CodeBlock , loc : PdlLocationType
1432
1432
) -> tuple [PdlLazy [Any ], LazyMessages , ScopeType , CodeBlock ]:
1433
1433
background : LazyMessages
1434
- code_ , _ , _ , block = process_block_of (
1435
- block ,
1436
- "code" ,
1437
- state .with_yield_result (False ).with_yield_background (False ),
1438
- scope ,
1439
- loc ,
1440
- )
1441
- code_s = code_ .result ()
1434
+ code_a = None
1435
+ if isinstance (block .code , list ):
1436
+ code_s = ""
1437
+ code_a , _ , _ , _ = process_block (
1438
+ state .with_yield_result (False ).with_yield_background (False ),
1439
+ scope ,
1440
+ ArrayBlock (array = block .code ),
1441
+ loc ,
1442
+ )
1443
+ else :
1444
+ code_ , _ , _ , block = process_block_of (
1445
+ block ,
1446
+ "code" ,
1447
+ state .with_yield_result (False ).with_yield_background (False ),
1448
+ scope ,
1449
+ loc ,
1450
+ )
1451
+ code_s = code_ .result ()
1442
1452
match block .lang :
1443
1453
case "python" :
1444
1454
try :
@@ -1456,7 +1466,7 @@ def process_call_code(
1456
1466
) from exc
1457
1467
case "command" :
1458
1468
try :
1459
- result = call_command (code_s , block . file == True )
1469
+ result = call_command (code_s , code_a )
1460
1470
background = PdlList (
1461
1471
[
1462
1472
PdlDict ( # type: ignore
@@ -1530,11 +1540,11 @@ def call_python(code: str, scope: ScopeType) -> PdlLazy[Any]:
1530
1540
return PdlConst (result )
1531
1541
1532
1542
1533
- def call_command (code : str , is_file : bool ) -> PdlLazy [str ]:
1534
- if is_file :
1535
- with open ( code , "r" ) as f :
1536
- code = f . read ()
1537
- args = shlex .split (code )
1543
+ def call_command (code : str , code_a : PdlLazy [ list [ str ]] | None ) -> PdlLazy [str ]:
1544
+ if code_a is not None and isinstance ( code_a . result (), list ) :
1545
+ args = code_a . result ()
1546
+ else :
1547
+ args = shlex .split (code )
1538
1548
p = subprocess .run (
1539
1549
args , capture_output = True , text = True , check = False , shell = False
1540
1550
) # nosec B603
0 commit comments