Allow using 'source -- file' (fixes #1518)
This commit is contained in:
parent
b456987b84
commit
c53c8a5ead
|
@ -204,6 +204,9 @@ prop_failsWhenNotSourcing =
|
||||||
prop_worksWhenSourcing =
|
prop_worksWhenSourcing =
|
||||||
null $ checkWithIncludes [("lib", "bar=1")] "source lib; echo \"$bar\""
|
null $ checkWithIncludes [("lib", "bar=1")] "source lib; echo \"$bar\""
|
||||||
|
|
||||||
|
prop_worksWhenSourcingWithDashDash =
|
||||||
|
null $ checkWithIncludes [("lib", "bar=1")] "source -- lib; echo \"$bar\""
|
||||||
|
|
||||||
prop_worksWhenDotting =
|
prop_worksWhenDotting =
|
||||||
null $ checkWithIncludes [("lib", "bar=1")] ". lib; echo \"$bar\""
|
null $ checkWithIncludes [("lib", "bar=1")] ". lib; echo \"$bar\""
|
||||||
|
|
||||||
|
|
|
@ -2062,7 +2062,8 @@ readSimpleCommand = called "simple command" $ do
|
||||||
|
|
||||||
|
|
||||||
readSource :: Monad m => Token -> SCParser m Token
|
readSource :: Monad m => Token -> SCParser m Token
|
||||||
readSource t@(T_Redirecting _ _ (T_SimpleCommand cmdId _ (cmd:file:_))) = do
|
readSource t@(T_Redirecting _ _ (T_SimpleCommand cmdId _ (cmd:file':rest'))) = do
|
||||||
|
let file = getFile file' rest'
|
||||||
override <- getSourceOverride
|
override <- getSourceOverride
|
||||||
let literalFile = do
|
let literalFile = do
|
||||||
name <- override `mplus` getLiteralString file
|
name <- override `mplus` getLiteralString file
|
||||||
|
@ -2107,6 +2108,13 @@ readSource t@(T_Redirecting _ _ (T_SimpleCommand cmdId _ (cmd:file:_))) = do
|
||||||
|
|
||||||
included <|> failed
|
included <|> failed
|
||||||
where
|
where
|
||||||
|
getFile :: Token -> [Token] -> Token
|
||||||
|
getFile file (next:rest) =
|
||||||
|
case getLiteralString file of
|
||||||
|
Just "--" -> next
|
||||||
|
x -> file
|
||||||
|
getFile file _ = file
|
||||||
|
|
||||||
subRead name script =
|
subRead name script =
|
||||||
withContext (ContextSource name) $
|
withContext (ContextSource name) $
|
||||||
inSeparateContext $
|
inSeparateContext $
|
||||||
|
|
Loading…
Reference in New Issue