Add support for source-path directives (fixes #1577)

This commit is contained in:
Vidar Holen 2019-05-09 19:54:30 -07:00
parent aa4b24e458
commit d9e419d60f
7 changed files with 67 additions and 17 deletions

View file

@ -73,8 +73,12 @@ import qualified Data.Map as Map
data SystemInterface m = SystemInterface {
-- Read a file by filename, or return an error
siReadFile :: String -> m (Either ErrorMessage String),
-- Given the current script and a sourced file, find the sourced file
siFindSource :: String -> String -> m FilePath,
-- Given:
-- the current script,
-- a list of source-path annotations in effect,
-- and a sourced file,
-- find the sourced file
siFindSource :: String -> [String] -> String -> m FilePath,
-- Get the configuration file (name, contents) for a filename
siGetConfig :: String -> m (Maybe (FilePath, String))
}
@ -297,7 +301,7 @@ mockedSystemInterface files = SystemInterface {
case filter ((== file) . fst) files of
[] -> return $ Left "File not included in mock."
[(_, contents)] -> return $ Right contents
fs _ file = return file
fs _ _ file = return file
mockRcFile rcfile mock = mock {
siGetConfig = const . return $ Just (".shellcheckrc", rcfile)