-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Shell script analysis tool
--
-- The goals of ShellCheck are:
--
--
-- - To point out and clarify typical beginner's syntax issues, that
-- causes a shell to give cryptic error messages.
-- - To point out and clarify typical intermediate level semantic
-- problems, that causes a shell to behave strangely and
-- counter-intuitively.
-- - To point out subtle caveats, corner cases and pitfalls, that may
-- cause an advanced user's otherwise working script to fail under future
-- circumstances.
--
@package ShellCheck
@version 0.8.0
module ShellCheck.Regex
mkRegex :: String -> Regex
matches :: String -> Regex -> Bool
matchRegex :: Regex -> String -> Maybe [String]
matchAllStrings :: Regex -> String -> [String]
matchAllSubgroups :: Regex -> String -> [[String]]
subRegex :: Regex -> String -> String -> String
splitOn :: String -> Regex -> [String]
module ShellCheck.AST
newtype Id
Id :: Int -> Id
data Quoted
Quoted :: Quoted
Unquoted :: Quoted
data Dashed
Dashed :: Dashed
Undashed :: Dashed
data AssignmentMode
Assign :: AssignmentMode
Append :: AssignmentMode
newtype FunctionKeyword
FunctionKeyword :: Bool -> FunctionKeyword
newtype FunctionParentheses
FunctionParentheses :: Bool -> FunctionParentheses
data CaseType
CaseBreak :: CaseType
CaseFallThrough :: CaseType
CaseContinue :: CaseType
newtype Root
Root :: Token -> Root
data Token
OuterToken :: Id -> InnerToken Token -> Token
data InnerToken t
Inner_TA_Binary :: String -> t -> t -> InnerToken t
Inner_TA_Assignment :: String -> t -> t -> InnerToken t
Inner_TA_Variable :: String -> [t] -> InnerToken t
Inner_TA_Expansion :: [t] -> InnerToken t
Inner_TA_Sequence :: [t] -> InnerToken t
Inner_TA_Trinary :: t -> t -> t -> InnerToken t
Inner_TA_Unary :: String -> t -> InnerToken t
Inner_TC_And :: ConditionType -> String -> t -> t -> InnerToken t
Inner_TC_Binary :: ConditionType -> String -> t -> t -> InnerToken t
Inner_TC_Group :: ConditionType -> t -> InnerToken t
Inner_TC_Nullary :: ConditionType -> t -> InnerToken t
Inner_TC_Or :: ConditionType -> String -> t -> t -> InnerToken t
Inner_TC_Unary :: ConditionType -> String -> t -> InnerToken t
Inner_TC_Empty :: ConditionType -> InnerToken t
Inner_T_AND_IF :: InnerToken t
Inner_T_AndIf :: t -> t -> InnerToken t
Inner_T_Arithmetic :: t -> InnerToken t
Inner_T_Array :: [t] -> InnerToken t
Inner_T_IndexedElement :: [t] -> t -> InnerToken t
Inner_T_UnparsedIndex :: SourcePos -> String -> InnerToken t
Inner_T_Assignment :: AssignmentMode -> String -> [t] -> t -> InnerToken t
Inner_T_Backgrounded :: t -> InnerToken t
Inner_T_Backticked :: [t] -> InnerToken t
Inner_T_Bang :: InnerToken t
Inner_T_Banged :: t -> InnerToken t
Inner_T_BraceExpansion :: [t] -> InnerToken t
Inner_T_BraceGroup :: [t] -> InnerToken t
Inner_T_CLOBBER :: InnerToken t
Inner_T_Case :: InnerToken t
Inner_T_CaseExpression :: t -> [(CaseType, [t], [t])] -> InnerToken t
Inner_T_Condition :: ConditionType -> t -> InnerToken t
Inner_T_DGREAT :: InnerToken t
Inner_T_DLESS :: InnerToken t
Inner_T_DLESSDASH :: InnerToken t
Inner_T_DSEMI :: InnerToken t
Inner_T_Do :: InnerToken t
Inner_T_DollarArithmetic :: t -> InnerToken t
Inner_T_DollarBraced :: Bool -> t -> InnerToken t
Inner_T_DollarBracket :: t -> InnerToken t
Inner_T_DollarDoubleQuoted :: [t] -> InnerToken t
Inner_T_DollarExpansion :: [t] -> InnerToken t
Inner_T_DollarSingleQuoted :: String -> InnerToken t
Inner_T_DollarBraceCommandExpansion :: [t] -> InnerToken t
Inner_T_Done :: InnerToken t
Inner_T_DoubleQuoted :: [t] -> InnerToken t
Inner_T_EOF :: InnerToken t
Inner_T_Elif :: InnerToken t
Inner_T_Else :: InnerToken t
Inner_T_Esac :: InnerToken t
Inner_T_Extglob :: String -> [t] -> InnerToken t
Inner_T_FdRedirect :: String -> t -> InnerToken t
Inner_T_Fi :: InnerToken t
Inner_T_For :: InnerToken t
Inner_T_ForArithmetic :: t -> t -> t -> [t] -> InnerToken t
Inner_T_ForIn :: String -> [t] -> [t] -> InnerToken t
Inner_T_Function :: FunctionKeyword -> FunctionParentheses -> String -> t -> InnerToken t
Inner_T_GREATAND :: InnerToken t
Inner_T_Glob :: String -> InnerToken t
Inner_T_Greater :: InnerToken t
Inner_T_HereDoc :: Dashed -> Quoted -> String -> [t] -> InnerToken t
Inner_T_HereString :: t -> InnerToken t
Inner_T_If :: InnerToken t
Inner_T_IfExpression :: [([t], [t])] -> [t] -> InnerToken t
Inner_T_In :: InnerToken t
Inner_T_IoFile :: t -> t -> InnerToken t
Inner_T_IoDuplicate :: t -> String -> InnerToken t
Inner_T_LESSAND :: InnerToken t
Inner_T_LESSGREAT :: InnerToken t
Inner_T_Lbrace :: InnerToken t
Inner_T_Less :: InnerToken t
Inner_T_Literal :: String -> InnerToken t
Inner_T_Lparen :: InnerToken t
Inner_T_NEWLINE :: InnerToken t
Inner_T_NormalWord :: [t] -> InnerToken t
Inner_T_OR_IF :: InnerToken t
Inner_T_OrIf :: t -> t -> InnerToken t
Inner_T_ParamSubSpecialChar :: String -> InnerToken t
Inner_T_Pipeline :: [t] -> [t] -> InnerToken t
Inner_T_ProcSub :: String -> [t] -> InnerToken t
Inner_T_Rbrace :: InnerToken t
Inner_T_Redirecting :: [t] -> t -> InnerToken t
Inner_T_Rparen :: InnerToken t
Inner_T_Script :: t -> [t] -> InnerToken t
Inner_T_Select :: InnerToken t
Inner_T_SelectIn :: String -> [t] -> [t] -> InnerToken t
Inner_T_Semi :: InnerToken t
Inner_T_SimpleCommand :: [t] -> [t] -> InnerToken t
Inner_T_SingleQuoted :: String -> InnerToken t
Inner_T_Subshell :: [t] -> InnerToken t
Inner_T_Then :: InnerToken t
Inner_T_Until :: InnerToken t
Inner_T_UntilExpression :: [t] -> [t] -> InnerToken t
Inner_T_While :: InnerToken t
Inner_T_WhileExpression :: [t] -> [t] -> InnerToken t
Inner_T_Annotation :: [Annotation] -> t -> InnerToken t
Inner_T_Pipe :: String -> InnerToken t
Inner_T_CoProc :: Maybe String -> t -> InnerToken t
Inner_T_CoProcBody :: t -> InnerToken t
Inner_T_Include :: t -> InnerToken t
Inner_T_SourceCommand :: t -> t -> InnerToken t
Inner_T_BatsTest :: t -> t -> InnerToken t
data Annotation
DisableComment :: Integer -> Integer -> Annotation
EnableComment :: String -> Annotation
SourceOverride :: String -> Annotation
ShellOverride :: String -> Annotation
SourcePath :: String -> Annotation
ExternalSources :: Bool -> Annotation
data ConditionType
DoubleBracket :: ConditionType
SingleBracket :: ConditionType
pattern T_AND_IF :: Id -> Token
pattern T_Bang :: Id -> Token
pattern T_Case :: Id -> Token
pattern TC_Empty :: Id -> ConditionType -> Token
pattern T_CLOBBER :: Id -> Token
pattern T_DGREAT :: Id -> Token
pattern T_DLESS :: Id -> Token
pattern T_DLESSDASH :: Id -> Token
pattern T_Do :: Id -> Token
pattern T_DollarSingleQuoted :: Id -> String -> Token
pattern T_Done :: Id -> Token
pattern T_DSEMI :: Id -> Token
pattern T_Elif :: Id -> Token
pattern T_Else :: Id -> Token
pattern T_EOF :: Id -> Token
pattern T_Esac :: Id -> Token
pattern T_Fi :: Id -> Token
pattern T_For :: Id -> Token
pattern T_Glob :: Id -> String -> Token
pattern T_GREATAND :: Id -> Token
pattern T_Greater :: Id -> Token
pattern T_If :: Id -> Token
pattern T_In :: Id -> Token
pattern T_Lbrace :: Id -> Token
pattern T_Less :: Id -> Token
pattern T_LESSAND :: Id -> Token
pattern T_LESSGREAT :: Id -> Token
pattern T_Literal :: Id -> String -> Token
pattern T_Lparen :: Id -> Token
pattern T_NEWLINE :: Id -> Token
pattern T_OR_IF :: Id -> Token
pattern T_ParamSubSpecialChar :: Id -> String -> Token
pattern T_Pipe :: Id -> String -> Token
pattern T_Rbrace :: Id -> Token
pattern T_Rparen :: Id -> Token
pattern T_Select :: Id -> Token
pattern T_Semi :: Id -> Token
pattern T_SingleQuoted :: Id -> String -> Token
pattern T_Then :: Id -> Token
pattern T_UnparsedIndex :: Id -> SourcePos -> String -> Token
pattern T_Until :: Id -> Token
pattern T_While :: Id -> Token
pattern TA_Assignment :: Id -> String -> Token -> Token -> Token
pattern TA_Binary :: Id -> String -> Token -> Token -> Token
pattern TA_Expansion :: Id -> [Token] -> Token
pattern T_AndIf :: Id -> Token -> Token -> Token
pattern T_Annotation :: Id -> [Annotation] -> Token -> Token
pattern T_Arithmetic :: Id -> Token -> Token
pattern T_Array :: Id -> [Token] -> Token
pattern TA_Sequence :: Id -> [Token] -> Token
pattern T_Assignment :: Id -> AssignmentMode -> String -> [Token] -> Token -> Token
pattern TA_Trinary :: Id -> Token -> Token -> Token -> Token
pattern TA_Unary :: Id -> String -> Token -> Token
pattern TA_Variable :: Id -> String -> [Token] -> Token
pattern T_Backgrounded :: Id -> Token -> Token
pattern T_Backticked :: Id -> [Token] -> Token
pattern T_Banged :: Id -> Token -> Token
pattern T_BatsTest :: Id -> Token -> Token -> Token
pattern T_BraceExpansion :: Id -> [Token] -> Token
pattern T_BraceGroup :: Id -> [Token] -> Token
pattern TC_And :: Id -> ConditionType -> String -> Token -> Token -> Token
pattern T_CaseExpression :: Id -> Token -> [(CaseType, [Token], [Token])] -> Token
pattern TC_Binary :: Id -> ConditionType -> String -> Token -> Token -> Token
pattern TC_Group :: Id -> ConditionType -> Token -> Token
pattern TC_Nullary :: Id -> ConditionType -> Token -> Token
pattern T_Condition :: Id -> ConditionType -> Token -> Token
pattern T_CoProcBody :: Id -> Token -> Token
pattern T_CoProc :: Id -> Maybe String -> Token -> Token
pattern TC_Or :: Id -> ConditionType -> String -> Token -> Token -> Token
pattern TC_Unary :: Id -> ConditionType -> String -> Token -> Token
pattern T_DollarArithmetic :: Id -> Token -> Token
pattern T_DollarBraceCommandExpansion :: Id -> [Token] -> Token
pattern T_DollarBraced :: Id -> Bool -> Token -> Token
pattern T_DollarBracket :: Id -> Token -> Token
pattern T_DollarDoubleQuoted :: Id -> [Token] -> Token
pattern T_DollarExpansion :: Id -> [Token] -> Token
pattern T_DoubleQuoted :: Id -> [Token] -> Token
pattern T_Extglob :: Id -> String -> [Token] -> Token
pattern T_FdRedirect :: Id -> String -> Token -> Token
pattern T_ForArithmetic :: Id -> Token -> Token -> Token -> [Token] -> Token
pattern T_ForIn :: Id -> String -> [Token] -> [Token] -> Token
pattern T_Function :: Id -> FunctionKeyword -> FunctionParentheses -> String -> Token -> Token
pattern T_HereDoc :: Id -> Dashed -> Quoted -> String -> [Token] -> Token
pattern T_HereString :: Id -> Token -> Token
pattern T_IfExpression :: Id -> [([Token], [Token])] -> [Token] -> Token
pattern T_Include :: Id -> Token -> Token
pattern T_IndexedElement :: Id -> [Token] -> Token -> Token
pattern T_IoDuplicate :: Id -> Token -> String -> Token
pattern T_IoFile :: Id -> Token -> Token -> Token
pattern T_NormalWord :: Id -> [Token] -> Token
pattern T_OrIf :: Id -> Token -> Token -> Token
pattern T_Pipeline :: Id -> [Token] -> [Token] -> Token
pattern T_ProcSub :: Id -> String -> [Token] -> Token
pattern T_Redirecting :: Id -> [Token] -> Token -> Token
pattern T_Script :: Id -> Token -> [Token] -> Token
pattern T_SelectIn :: Id -> String -> [Token] -> [Token] -> Token
pattern T_SimpleCommand :: Id -> [Token] -> [Token] -> Token
pattern T_SourceCommand :: Id -> Token -> Token -> Token
pattern T_Subshell :: Id -> [Token] -> Token
pattern T_UntilExpression :: Id -> [Token] -> [Token] -> Token
pattern T_WhileExpression :: Id -> [Token] -> [Token] -> Token
analyze :: Monad m => (Token -> m ()) -> (Token -> m ()) -> (Token -> m Token) -> Token -> m Token
getId :: Token -> Id
blank :: Monad m => Token -> m ()
doAnalysis :: Monad m => (Token -> m ()) -> Token -> m Token
doStackAnalysis :: Monad m => (Token -> m ()) -> (Token -> m ()) -> Token -> m Token
doTransform :: (Token -> Token) -> Token -> Token
instance Control.DeepSeq.NFData ShellCheck.AST.Id
instance GHC.Generics.Generic ShellCheck.AST.Id
instance GHC.Classes.Ord ShellCheck.AST.Id
instance GHC.Classes.Eq ShellCheck.AST.Id
instance GHC.Show.Show ShellCheck.AST.Id
instance GHC.Classes.Eq ShellCheck.AST.Quoted
instance GHC.Show.Show ShellCheck.AST.Quoted
instance GHC.Classes.Eq ShellCheck.AST.Dashed
instance GHC.Show.Show ShellCheck.AST.Dashed
instance GHC.Classes.Eq ShellCheck.AST.AssignmentMode
instance GHC.Show.Show ShellCheck.AST.AssignmentMode
instance GHC.Classes.Eq ShellCheck.AST.FunctionKeyword
instance GHC.Show.Show ShellCheck.AST.FunctionKeyword
instance GHC.Classes.Eq ShellCheck.AST.FunctionParentheses
instance GHC.Show.Show ShellCheck.AST.FunctionParentheses
instance GHC.Classes.Eq ShellCheck.AST.CaseType
instance GHC.Show.Show ShellCheck.AST.CaseType
instance GHC.Classes.Eq ShellCheck.AST.Annotation
instance GHC.Show.Show ShellCheck.AST.Annotation
instance GHC.Classes.Eq ShellCheck.AST.ConditionType
instance GHC.Show.Show ShellCheck.AST.ConditionType
instance Data.Traversable.Traversable ShellCheck.AST.InnerToken
instance Data.Foldable.Foldable ShellCheck.AST.InnerToken
instance GHC.Base.Functor ShellCheck.AST.InnerToken
instance GHC.Classes.Eq t => GHC.Classes.Eq (ShellCheck.AST.InnerToken t)
instance GHC.Show.Show t => GHC.Show.Show (ShellCheck.AST.InnerToken t)
instance GHC.Show.Show ShellCheck.AST.Token
instance GHC.Classes.Eq ShellCheck.AST.Token
module ShellCheck.Interface
data SystemInterface m
SystemInterface :: (Maybe Bool -> String -> m (Either ErrorMessage String)) -> (String -> Maybe Bool -> [String] -> String -> m FilePath) -> (String -> m (Maybe (FilePath, String))) -> SystemInterface m
-- | Given: What annotations say about including external files (if
-- anything) A resolved filename from siFindSource Read the file or
-- return an error
[siReadFile] :: SystemInterface m -> Maybe Bool -> String -> m (Either ErrorMessage String)
-- | Given: the current script, what annotations say about including
-- external files (if anything) a list of source-path annotations in
-- effect, and a sourced file, find the sourced file
[siFindSource] :: SystemInterface m -> String -> Maybe Bool -> [String] -> String -> m FilePath
-- | Get the configuration file (name, contents) for a filename
[siGetConfig] :: SystemInterface m -> String -> m (Maybe (FilePath, String))
data CheckSpec
data CheckResult
data ParseSpec
data ParseResult
data AnalysisSpec
data AnalysisResult
data FormatterOptions
data Shell
Ksh :: Shell
Sh :: Shell
Bash :: Shell
Dash :: Shell
data ExecutionMode
Executed :: ExecutionMode
Sourced :: ExecutionMode
type ErrorMessage = String
type Code = Integer
data Severity
ErrorC :: Severity
WarningC :: Severity
InfoC :: Severity
StyleC :: Severity
data Position
data Comment
data PositionedComment
data ColorOption
ColorAuto :: ColorOption
ColorAlways :: ColorOption
ColorNever :: ColorOption
data TokenComment
emptyCheckResult :: CheckResult
newParseResult :: ParseResult
newAnalysisSpec :: Token -> AnalysisSpec
newAnalysisResult :: AnalysisResult
newFormatterOptions :: FormatterOptions
newPosition :: Position
newTokenComment :: TokenComment
mockedSystemInterface :: [(String, String)] -> SystemInterface Identity
mockRcFile :: forall (m :: Type -> Type). Monad m => String -> SystemInterface m -> SystemInterface m
newParseSpec :: ParseSpec
emptyCheckSpec :: CheckSpec
newPositionedComment :: PositionedComment
newComment :: Comment
data Fix
newFix :: Fix
data InsertionPoint
InsertBefore :: InsertionPoint
InsertAfter :: InsertionPoint
data Replacement
newReplacement :: Replacement
data CheckDescription
newCheckDescription :: CheckDescription
instance GHC.Classes.Eq ShellCheck.Interface.Shell
instance GHC.Show.Show ShellCheck.Interface.Shell
instance GHC.Classes.Eq ShellCheck.Interface.ParseSpec
instance GHC.Show.Show ShellCheck.Interface.ParseSpec
instance GHC.Classes.Eq ShellCheck.Interface.ExecutionMode
instance GHC.Show.Show ShellCheck.Interface.ExecutionMode
instance Control.DeepSeq.NFData ShellCheck.Interface.Severity
instance GHC.Generics.Generic ShellCheck.Interface.Severity
instance GHC.Classes.Ord ShellCheck.Interface.Severity
instance GHC.Classes.Eq ShellCheck.Interface.Severity
instance GHC.Show.Show ShellCheck.Interface.Severity
instance GHC.Classes.Eq ShellCheck.Interface.CheckSpec
instance GHC.Show.Show ShellCheck.Interface.CheckSpec
instance GHC.Classes.Ord ShellCheck.Interface.Position
instance Control.DeepSeq.NFData ShellCheck.Interface.Position
instance GHC.Generics.Generic ShellCheck.Interface.Position
instance GHC.Classes.Eq ShellCheck.Interface.Position
instance GHC.Show.Show ShellCheck.Interface.Position
instance Control.DeepSeq.NFData ShellCheck.Interface.Comment
instance GHC.Generics.Generic ShellCheck.Interface.Comment
instance GHC.Classes.Eq ShellCheck.Interface.Comment
instance GHC.Show.Show ShellCheck.Interface.Comment
instance Control.DeepSeq.NFData ShellCheck.Interface.InsertionPoint
instance GHC.Generics.Generic ShellCheck.Interface.InsertionPoint
instance GHC.Classes.Eq ShellCheck.Interface.InsertionPoint
instance GHC.Show.Show ShellCheck.Interface.InsertionPoint
instance Control.DeepSeq.NFData ShellCheck.Interface.Replacement
instance GHC.Generics.Generic ShellCheck.Interface.Replacement
instance GHC.Classes.Eq ShellCheck.Interface.Replacement
instance GHC.Show.Show ShellCheck.Interface.Replacement
instance Control.DeepSeq.NFData ShellCheck.Interface.Fix
instance GHC.Generics.Generic ShellCheck.Interface.Fix
instance GHC.Classes.Eq ShellCheck.Interface.Fix
instance GHC.Show.Show ShellCheck.Interface.Fix
instance Control.DeepSeq.NFData ShellCheck.Interface.PositionedComment
instance GHC.Generics.Generic ShellCheck.Interface.PositionedComment
instance GHC.Classes.Eq ShellCheck.Interface.PositionedComment
instance GHC.Show.Show ShellCheck.Interface.PositionedComment
instance GHC.Classes.Eq ShellCheck.Interface.ParseResult
instance GHC.Show.Show ShellCheck.Interface.ParseResult
instance GHC.Classes.Eq ShellCheck.Interface.CheckResult
instance GHC.Show.Show ShellCheck.Interface.CheckResult
instance Control.DeepSeq.NFData ShellCheck.Interface.TokenComment
instance GHC.Generics.Generic ShellCheck.Interface.TokenComment
instance GHC.Classes.Eq ShellCheck.Interface.TokenComment
instance GHC.Show.Show ShellCheck.Interface.TokenComment
instance GHC.Show.Show ShellCheck.Interface.ColorOption
instance GHC.Classes.Eq ShellCheck.Interface.ColorOption
instance GHC.Classes.Ord ShellCheck.Interface.ColorOption
module ShellCheck.Fixer
applyFix :: Fix -> Array Int String -> [String]
removeTabStops :: Ranged a => a -> Array Int String -> a
mapPositions :: (Position -> Position) -> Fix -> Fix
class Ranged a
start :: Ranged a => a -> Position
end :: Ranged a => a -> Position
overlap :: Ranged a => a -> a -> Bool
setRange :: Ranged a => (Position, Position) -> a -> a
runTests :: IO Bool
instance GHC.Show.Show n => GHC.Show.Show (ShellCheck.Fixer.PSTree n)
instance ShellCheck.Fixer.Ranged ShellCheck.Interface.PositionedComment
instance ShellCheck.Fixer.Ranged ShellCheck.Interface.Replacement
instance GHC.Base.Semigroup ShellCheck.Interface.Fix
instance GHC.Base.Monoid ShellCheck.Interface.Fix
module ShellCheck.Data
shellcheckVersion :: String
internalVariables :: [[Char]]
specialVariablesWithoutSpaces :: [[Char]]
variablesWithoutSpaces :: [[Char]]
specialVariables :: [[Char]]
unbracedVariables :: [[Char]]
arrayVariables :: [[Char]]
commonCommands :: [[Char]]
nonReadingCommands :: [[Char]]
sampleWords :: [[Char]]
binaryTestOps :: [[Char]]
arithmeticBinaryTestOps :: [[Char]]
unaryTestOps :: [[Char]]
shellForExecutable :: String -> Maybe Shell
flagsForRead :: [Char]
declaringCommands :: [[Char]]
module ShellCheck.Formatter.Format
data Formatter
Formatter :: IO () -> (CheckResult -> SystemInterface IO -> IO ()) -> (FilePath -> ErrorMessage -> IO ()) -> IO () -> Formatter
[header] :: Formatter -> IO ()
[onResult] :: Formatter -> CheckResult -> SystemInterface IO -> IO ()
[onFailure] :: Formatter -> FilePath -> ErrorMessage -> IO ()
[footer] :: Formatter -> IO ()
sourceFile :: PositionedComment -> String
lineNo :: PositionedComment -> Integer
endLineNo :: PositionedComment -> Integer
colNo :: PositionedComment -> Integer
endColNo :: PositionedComment -> Integer
codeNo :: PositionedComment -> Code
messageText :: PositionedComment -> String
severityText :: PositionedComment -> String
makeNonVirtual :: [PositionedComment] -> [Char] -> [PositionedComment]
shouldOutputColor :: ColorOption -> IO Bool
module ShellCheck.Formatter.TTY
format :: FormatterOptions -> IO Formatter
module ShellCheck.Formatter.Quiet
format :: FormatterOptions -> IO Formatter
module ShellCheck.Formatter.JSON1
format :: IO Formatter
instance Data.Aeson.Types.ToJSON.ToJSON ShellCheck.Formatter.JSON1.Json1Output
instance Data.Aeson.Types.ToJSON.ToJSON ShellCheck.Interface.Replacement
instance Data.Aeson.Types.ToJSON.ToJSON ShellCheck.Interface.PositionedComment
instance Data.Aeson.Types.ToJSON.ToJSON ShellCheck.Interface.Fix
module ShellCheck.Formatter.JSON
format :: IO Formatter
instance Data.Aeson.Types.ToJSON.ToJSON ShellCheck.Interface.Replacement
instance Data.Aeson.Types.ToJSON.ToJSON ShellCheck.Interface.PositionedComment
instance Data.Aeson.Types.ToJSON.ToJSON ShellCheck.Interface.Fix
module ShellCheck.Formatter.GCC
format :: IO Formatter
module ShellCheck.Formatter.Diff
format :: FormatterOptions -> IO Formatter
runTests :: IO Bool
module ShellCheck.Formatter.CheckStyle
format :: IO Formatter
module ShellCheck.ASTLib
arguments :: Token -> [Token]
isLoop :: Token -> Bool
willSplit :: Token -> Bool
isGlob :: Token -> Bool
isConstant :: Token -> Bool
isEmpty :: Token -> Bool
oversimplify :: Token -> [[Char]]
getFlagsUntil :: ([Char] -> Bool) -> Token -> [(Token, [Char])]
getAllFlags :: Token -> [(Token, String)]
getLeadingFlags :: Token -> [(Token, [Char])]
hasFlag :: Token -> String -> Bool
isFlag :: Token -> Bool
isUnquotedFlag :: Token -> Bool
getGnuOpts :: String -> [Token] -> Maybe [(String, (Token, Token))]
getBsdOpts :: String -> [Token] -> Maybe [(String, (Token, Token))]
getOpts :: (Bool, Bool) -> String -> [(String, Bool)] -> [Token] -> Maybe [(String, (Token, Token))]
getGenericOpts :: [Token] -> [(String, (Token, Token))]
isArrayExpansion :: Token -> Bool
mayBecomeMultipleArgs :: Token -> Bool
willBecomeMultipleArgs :: Token -> Bool
willConcatInAssignment :: Token -> Bool
getLiteralString :: Token -> Maybe String
getLiteralStringDef :: String -> Token -> String
onlyLiteralString :: Token -> String
getUnquotedLiteral :: Token -> Maybe [Char]
isQuotes :: Token -> Bool
getTrailingUnquotedLiteral :: Token -> Maybe Token
getLeadingUnquotedString :: Token -> Maybe String
getGlobOrLiteralString :: Token -> Maybe String
getLiteralStringExt :: Monad m => (Token -> m String) -> Token -> m String
isLiteral :: Token -> Bool
e4m :: String -> String
escapeForMessage :: String -> String
getWordParts :: Token -> [Token]
braceExpand :: Token -> [Token]
getCommand :: Token -> Maybe Token
getCommandName :: Token -> Maybe String
getCommandArgv :: Token -> Maybe [Token]
getCommandTokenOrThis :: Token -> Token
getCommandNameAndToken :: Bool -> Token -> (Maybe String, Token)
getCommandNameFromExpansion :: Token -> Maybe String
getCommandBasename :: Token -> Maybe [Char]
basename :: [Char] -> [Char]
isAssignment :: Token -> Bool
isOnlyRedirection :: Token -> Bool
isFunction :: Token -> Bool
isFunctionLike :: Token -> Bool
isBraceExpansion :: Token -> Bool
getCommandSequences :: Token -> [[Token]]
getAssociativeArrays :: Token -> [String]
data PseudoGlob
PGAny :: PseudoGlob
PGMany :: PseudoGlob
PGChar :: Char -> PseudoGlob
wordToPseudoGlob :: Token -> [PseudoGlob]
wordToExactPseudoGlob :: Token -> Maybe [PseudoGlob]
wordToPseudoGlob' :: Bool -> Token -> Maybe [PseudoGlob]
simplifyPseudoGlob :: [PseudoGlob] -> [PseudoGlob]
pseudoGlobsCanOverlap :: [PseudoGlob] -> [PseudoGlob] -> Bool
pseudoGlobIsSuperSetof :: [PseudoGlob] -> [PseudoGlob] -> Bool
wordsCanBeEqual :: Token -> Token -> Bool
isQuoteableExpansion :: Token -> Bool
isCommandSubstitution :: Token -> Bool
isStringExpansion :: Token -> Bool
isAnnotationIgnoringCode :: Integer -> Token -> Bool
prop_executableFromShebang1 :: Bool
prop_executableFromShebang2 :: Bool
prop_executableFromShebang3 :: Bool
prop_executableFromShebang4 :: Bool
prop_executableFromShebang5 :: Bool
prop_executableFromShebang6 :: Bool
prop_executableFromShebang7 :: Bool
prop_executableFromShebang8 :: Bool
prop_executableFromShebang9 :: Bool
prop_executableFromShebang10 :: Bool
prop_executableFromShebang11 :: Bool
executableFromShebang :: String -> String
runTests :: IO Bool
instance GHC.Show.Show ShellCheck.ASTLib.PseudoGlob
instance GHC.Classes.Eq ShellCheck.ASTLib.PseudoGlob
module ShellCheck.Parser
parseScript :: Monad m => SystemInterface m -> ParseSpec -> m ParseResult
runTests :: IO Bool
instance GHC.Classes.Eq ShellCheck.Parser.ParseNote
instance GHC.Show.Show ShellCheck.Parser.ParseNote
instance GHC.Show.Show ShellCheck.Parser.Context
instance GHC.Show.Show ShellCheck.Parser.HereDocContext
module ShellCheck.AnalyzerLib
type Analysis = AnalyzerM ()
type AnalyzerM a = RWS Parameters [TokenComment] Cache a
nullCheck :: b -> RWST Parameters [TokenComment] Cache Identity ()
data Checker
Checker :: (Root -> Analysis) -> (Token -> Analysis) -> Checker
[perScript] :: Checker -> Root -> Analysis
[perToken] :: Checker -> Token -> Analysis
runChecker :: Parameters -> Checker -> [TokenComment]
composeAnalyzers :: (a -> Analysis) -> (a -> Analysis) -> a -> Analysis
data Parameters
Parameters :: Bool -> Bool -> Bool -> Bool -> [StackData] -> Map Id Token -> Shell -> Bool -> Token -> Map Id (Position, Position) -> Parameters
[hasLastpipe] :: Parameters -> Bool
[hasInheritErrexit] :: Parameters -> Bool
[hasSetE] :: Parameters -> Bool
[hasPipefail] :: Parameters -> Bool
[variableFlow] :: Parameters -> [StackData]
[parentMap] :: Parameters -> Map Id Token
[shellType] :: Parameters -> Shell
[shellTypeSpecified] :: Parameters -> Bool
[rootNode] :: Parameters -> Token
[tokenPositions] :: Parameters -> Map Id (Position, Position)
data Cache
Cache :: Cache
data Scope
SubshellScope :: String -> Scope
NoneScope :: Scope
data StackData
StackScope :: Scope -> StackData
StackScopeEnd :: StackData
Assignment :: (Token, Token, String, DataType) -> StackData
Reference :: (Token, Token, String) -> StackData
data DataType
DataString :: DataSource -> DataType
DataArray :: DataSource -> DataType
data DataSource
SourceFrom :: [Token] -> DataSource
SourceExternal :: DataSource
SourceDeclaration :: DataSource
SourceInteger :: DataSource
SourceChecked :: DataSource
data VariableState
Dead :: Token -> String -> VariableState
Alive :: VariableState
defaultSpec :: ParseResult -> AnalysisSpec
pScript :: [Char] -> ParseResult
producesComments :: Checker -> String -> Maybe Bool
makeComment :: Severity -> Id -> Code -> String -> TokenComment
addComment :: (NFData a, MonadWriter [a] m) => a -> m ()
warn :: MonadWriter [TokenComment] m => Id -> Code -> String -> m ()
err :: MonadWriter [TokenComment] m => Id -> Code -> String -> m ()
info :: MonadWriter [TokenComment] m => Id -> Code -> String -> m ()
style :: MonadWriter [TokenComment] m => Id -> Code -> String -> m ()
errWithFix :: MonadWriter [TokenComment] m => Id -> Code -> String -> Fix -> m ()
warnWithFix :: MonadWriter [TokenComment] m => Id -> Code -> String -> Fix -> m ()
infoWithFix :: MonadWriter [TokenComment] m => Id -> Code -> String -> Fix -> m ()
styleWithFix :: MonadWriter [TokenComment] m => Id -> Code -> String -> Fix -> m ()
addCommentWithFix :: MonadWriter [TokenComment] m => Severity -> Id -> Code -> String -> Fix -> m ()
makeCommentWithFix :: Severity -> Id -> Code -> String -> Fix -> TokenComment
makeParameters :: AnalysisSpec -> Parameters
containsSetE :: Token -> Bool
containsPipefail :: Token -> Bool
containsShopt :: [Char] -> Token -> Bool
containsInheritErrexit :: Token -> Bool
containsLastpipe :: Token -> Bool
prop_determineShell0 :: Bool
prop_determineShell1 :: Bool
prop_determineShell2 :: Bool
prop_determineShell3 :: Bool
prop_determineShell4 :: Bool
prop_determineShell5 :: Bool
prop_determineShell6 :: Bool
prop_determineShell7 :: Bool
prop_determineShell8 :: Bool
prop_determineShell9 :: Bool
prop_determineShell10 :: Bool
prop_determineShell11 :: Bool
prop_determineShell12 :: Bool
determineShellTest :: [Char] -> Shell
determineShellTest' :: Maybe Shell -> [Char] -> Shell
determineShell :: Maybe Shell -> Token -> Shell
getParentTree :: Token -> Map Id Token
getTokenMap :: Token -> Map Id Token
isStrictlyQuoteFree :: Shell -> Map Id Token -> Token -> Bool
isQuoteFree :: Shell -> Map Id Token -> Token -> Bool
isQuoteFreeNode :: Bool -> Shell -> Map Id Token -> Token -> Bool
isParamTo :: Map Id Token -> String -> Token -> Bool
getClosestCommand :: Map Id Token -> Token -> Maybe Token
getClosestCommandM :: MonadReader Parameters m => Token -> m (Maybe Token)
usedAsCommandName :: Map Id Token -> Token -> Bool
getPath :: Map Id Token -> Token -> [Token]
getPathM :: MonadReader Parameters m => Token -> m [Token]
isParentOf :: Map Id Token -> Token -> Token -> Bool
parents :: Parameters -> Token -> [Token]
findFirst :: (a -> Maybe Bool) -> [a] -> Maybe a
tokenIsJustCommandOutput :: Token -> Bool
getVariableFlow :: Parameters -> Token -> [StackData]
leadType :: Parameters -> Token -> Scope
getModifiedVariables :: Token -> [(Token, Token, String, DataType)]
isClosingFileOp :: Token -> Bool
getReferencedVariableCommand :: Token -> [(Token, Token, String)]
getModifiedVariableCommand :: Token -> [(Token, Token, [Char], DataType)]
getIndexReferences :: String -> [String]
getVariableForTestDashV :: Token -> Maybe String
prop_getOffsetReferences1 :: Bool
prop_getOffsetReferences2 :: Bool
prop_getOffsetReferences3 :: Bool
prop_getOffsetReferences4 :: Bool
getOffsetReferences :: String -> [String]
getReferencedVariables :: Map Id Token -> Token -> [(Token, Token, [Char])]
isDereferencingBinaryOp :: [Char] -> Bool
dataTypeFrom :: (DataSource -> DataType) -> Token -> DataType
isCommand :: Token -> String -> Bool
isUnqualifiedCommand :: Token -> String -> Bool
isCommandMatch :: Token -> (String -> Bool) -> Bool
isConfusedGlobRegex :: String -> Bool
isVariableStartChar :: Char -> Bool
isVariableChar :: Char -> Bool
isSpecialVariableChar :: Char -> Bool
variableNameRegex :: Regex
prop_isVariableName1 :: Bool
prop_isVariableName2 :: Bool
prop_isVariableName3 :: Bool
isVariableName :: [Char] -> Bool
getVariablesFromLiteralToken :: Token -> [String]
prop_getVariablesFromLiteral1 :: Bool
getVariablesFromLiteral :: String -> [String]
prop_getBracedReference1 :: Bool
prop_getBracedReference2 :: Bool
prop_getBracedReference3 :: Bool
prop_getBracedReference4 :: Bool
prop_getBracedReference5 :: Bool
prop_getBracedReference6 :: Bool
prop_getBracedReference7 :: Bool
prop_getBracedReference8 :: Bool
prop_getBracedReference9 :: Bool
prop_getBracedReference10 :: Bool
prop_getBracedReference11 :: Bool
prop_getBracedReference11b :: Bool
prop_getBracedReference12 :: Bool
prop_getBracedReference13 :: Bool
getBracedReference :: [Char] -> [Char]
prop_getBracedModifier1 :: Bool
prop_getBracedModifier2 :: Bool
prop_getBracedModifier3 :: Bool
prop_getBracedModifier4 :: Bool
prop_getBracedModifier5 :: Bool
getBracedModifier :: [Char] -> [Char]
headOrDefault :: p -> [p] -> p
lastOrDefault :: p -> [p] -> p
(!!!) :: [a] -> Int -> Maybe a
whenShell :: (MonadReader Parameters m, Foldable t) => t Shell -> m () -> m ()
filterByAnnotation :: AnalysisSpec -> Parameters -> [TokenComment] -> [TokenComment]
shouldIgnoreCode :: Parameters -> Integer -> Token -> Bool
isCountingReference :: Token -> Bool
isQuotedAlternativeReference :: Token -> Bool
supportsArrays :: Shell -> Bool
isBashLike :: Parameters -> Bool
isUnmodifiedParameterExpansion :: Token -> Bool
isTrueAssignmentSource :: DataType -> Bool
modifiesVariable :: Parameters -> Token -> [Char] -> Bool
runTests :: IO Bool
instance GHC.Classes.Eq ShellCheck.AnalyzerLib.Scope
instance GHC.Show.Show ShellCheck.AnalyzerLib.Scope
instance GHC.Show.Show ShellCheck.AnalyzerLib.DataSource
instance GHC.Show.Show ShellCheck.AnalyzerLib.DataType
instance GHC.Show.Show ShellCheck.AnalyzerLib.StackData
instance GHC.Show.Show ShellCheck.AnalyzerLib.Parameters
instance GHC.Show.Show ShellCheck.AnalyzerLib.VariableState
instance GHC.Base.Semigroup ShellCheck.AnalyzerLib.Checker
instance GHC.Base.Monoid ShellCheck.AnalyzerLib.Checker
module ShellCheck.Checks.ShellSupport
checker :: Parameters -> Checker
runTests :: IO Bool
module ShellCheck.Checks.Custom
checker :: Parameters -> Checker
runTests :: IO Bool
module ShellCheck.Checks.Commands
checker :: AnalysisSpec -> Parameters -> Checker
optionalChecks :: [CheckDescription]
runTests :: IO Bool
instance GHC.Classes.Ord ShellCheck.Checks.Commands.CommandName
instance GHC.Classes.Eq ShellCheck.Checks.Commands.CommandName
module ShellCheck.Analytics
runAnalytics :: AnalysisSpec -> [TokenComment]
optionalChecks :: [CheckDescription]
runTests :: IO Bool
instance GHC.Classes.Eq ShellCheck.Analytics.SpaceStatus
instance GHC.Classes.Eq ShellCheck.Analytics.PipeType
instance GHC.Base.Semigroup ShellCheck.Analytics.SpaceStatus
instance GHC.Base.Monoid ShellCheck.Analytics.SpaceStatus
module ShellCheck.Analyzer
analyzeScript :: AnalysisSpec -> AnalysisResult
optionalChecks :: [CheckDescription]
module ShellCheck.Checker
checkScript :: Monad m => SystemInterface m -> CheckSpec -> m CheckResult
runTests :: IO Bool