@@ -1431,14 +1431,24 @@ def process_call_code(
14311431 state : InterpreterState , scope : ScopeType , block : CodeBlock , loc : PdlLocationType
14321432) -> tuple [PdlLazy [Any ], LazyMessages , ScopeType , CodeBlock ]:
14331433 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 ()
14421452 match block .lang :
14431453 case "python" :
14441454 try :
@@ -1456,7 +1466,7 @@ def process_call_code(
14561466 ) from exc
14571467 case "command" :
14581468 try :
1459- result = call_command (code_s , block . file == True )
1469+ result = call_command (code_s , code_a )
14601470 background = PdlList (
14611471 [
14621472 PdlDict ( # type: ignore
@@ -1530,11 +1540,11 @@ def call_python(code: str, scope: ScopeType) -> PdlLazy[Any]:
15301540 return PdlConst (result )
15311541
15321542
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 )
15381548 p = subprocess .run (
15391549 args , capture_output = True , text = True , check = False , shell = False
15401550 ) # nosec B603
0 commit comments