From a9439b66ad8f7a8f4ba079a47ecfe1e76c2abc4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Fri, 4 Sep 2026 19:25:09 +0200 Subject: Expression expansion for shell arguments Changelog: Lists can now be dollar-expanded in the shell interpreter to provide list of shell command arguments. --- src/Parser/Shell.hs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/Parser/Shell.hs') diff --git a/src/Parser/Shell.hs b/src/Parser/Shell.hs index 45f00b9..a09eb43 100644 --- a/src/Parser/Shell.hs +++ b/src/Parser/Shell.hs @@ -92,11 +92,17 @@ parseRedirection = choice parseArgument :: TestParser (Expr ShellArgument) parseArgument = choice [ parseRedirection + , expressionExpansion "shell argument" <* sc , fmap ShellArgument <$> parseTextArgument ] parseArguments :: TestParser (Expr ShellArguments) -parseArguments = (ShellArguments <$>) . foldr (liftA2 (:)) (Pure []) <$> many parseArgument +parseArguments = do + arglists <- many $ choice + [ expressionExpansion "shell arguments" <* sc + , fmap (ShellArguments . (: [])) <$> parseArgument + ] + return $ fmap mconcat $ foldr (liftA2 (:)) (Pure []) $ arglists parseCommand :: TestParser (Expr ShellCommand) parseCommand = label "shell statement" $ do -- cgit v1.2.3