-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Shell script analysis tool -- -- The goals of ShellCheck are: -- -- @package ShellCheck @version 0.6.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 TA_Binary :: Id -> String -> Token -> Token -> Token TA_Assignment :: Id -> String -> Token -> Token -> Token TA_Variable :: Id -> String -> [Token] -> Token TA_Expansion :: Id -> [Token] -> Token TA_Sequence :: Id -> [Token] -> Token TA_Trinary :: Id -> Token -> Token -> Token -> Token TA_Unary :: Id -> String -> Token -> Token TC_And :: Id -> ConditionType -> String -> Token -> Token -> Token TC_Binary :: Id -> ConditionType -> String -> Token -> Token -> Token TC_Group :: Id -> ConditionType -> Token -> Token TC_Nullary :: Id -> ConditionType -> Token -> Token TC_Or :: Id -> ConditionType -> String -> Token -> Token -> Token TC_Unary :: Id -> ConditionType -> String -> Token -> Token TC_Empty :: Id -> ConditionType -> Token T_AND_IF :: Id -> Token T_AndIf :: Id -> Token -> Token -> Token T_Arithmetic :: Id -> Token -> Token T_Array :: Id -> [Token] -> Token T_IndexedElement :: Id -> [Token] -> Token -> Token T_UnparsedIndex :: Id -> SourcePos -> String -> Token T_Assignment :: Id -> AssignmentMode -> String -> [Token] -> Token -> Token T_Backgrounded :: Id -> Token -> Token T_Backticked :: Id -> [Token] -> Token T_Bang :: Id -> Token T_Banged :: Id -> Token -> Token T_BraceExpansion :: Id -> [Token] -> Token T_BraceGroup :: Id -> [Token] -> Token T_CLOBBER :: Id -> Token T_Case :: Id -> Token T_CaseExpression :: Id -> Token -> [(CaseType, [Token], [Token])] -> Token T_Condition :: Id -> ConditionType -> Token -> Token T_DGREAT :: Id -> Token T_DLESS :: Id -> Token T_DLESSDASH :: Id -> Token T_DSEMI :: Id -> Token T_Do :: Id -> Token T_DollarArithmetic :: Id -> Token -> Token T_DollarBraced :: Id -> Token -> Token T_DollarBracket :: Id -> Token -> Token T_DollarDoubleQuoted :: Id -> [Token] -> Token T_DollarExpansion :: Id -> [Token] -> Token T_DollarSingleQuoted :: Id -> String -> Token T_DollarBraceCommandExpansion :: Id -> [Token] -> Token T_Done :: Id -> Token T_DoubleQuoted :: Id -> [Token] -> Token T_EOF :: Id -> Token T_Elif :: Id -> Token T_Else :: Id -> Token T_Esac :: Id -> Token T_Extglob :: Id -> String -> [Token] -> Token T_FdRedirect :: Id -> String -> Token -> Token T_Fi :: Id -> Token T_For :: Id -> Token T_ForArithmetic :: Id -> Token -> Token -> Token -> [Token] -> Token T_ForIn :: Id -> String -> [Token] -> [Token] -> Token T_Function :: Id -> FunctionKeyword -> FunctionParentheses -> String -> Token -> Token T_GREATAND :: Id -> Token T_Glob :: Id -> String -> Token T_Greater :: Id -> Token T_HereDoc :: Id -> Dashed -> Quoted -> String -> [Token] -> Token T_HereString :: Id -> Token -> Token T_If :: Id -> Token T_IfExpression :: Id -> [([Token], [Token])] -> [Token] -> Token T_In :: Id -> Token T_IoFile :: Id -> Token -> Token -> Token T_IoDuplicate :: Id -> Token -> String -> Token T_LESSAND :: Id -> Token T_LESSGREAT :: Id -> Token T_Lbrace :: Id -> Token T_Less :: Id -> Token T_Literal :: Id -> String -> Token T_Lparen :: Id -> Token T_NEWLINE :: Id -> Token T_NormalWord :: Id -> [Token] -> Token T_OR_IF :: Id -> Token T_OrIf :: Id -> Token -> Token -> Token T_ParamSubSpecialChar :: Id -> String -> Token T_Pipeline :: Id -> [Token] -> [Token] -> Token T_ProcSub :: Id -> String -> [Token] -> Token T_Rbrace :: Id -> Token T_Redirecting :: Id -> [Token] -> Token -> Token T_Rparen :: Id -> Token T_Script :: Id -> String -> [Token] -> Token T_Select :: Id -> Token T_SelectIn :: Id -> String -> [Token] -> [Token] -> Token T_Semi :: Id -> Token T_SimpleCommand :: Id -> [Token] -> [Token] -> Token T_SingleQuoted :: Id -> String -> Token T_Subshell :: Id -> [Token] -> Token T_Then :: Id -> Token T_Until :: Id -> Token T_UntilExpression :: Id -> [Token] -> [Token] -> Token T_While :: Id -> Token T_WhileExpression :: Id -> [Token] -> [Token] -> Token T_Annotation :: Id -> [Annotation] -> Token -> Token T_Pipe :: Id -> String -> Token T_CoProc :: Id -> Maybe String -> Token -> Token T_CoProcBody :: Id -> Token -> Token T_Include :: Id -> Token -> Token T_SourceCommand :: Id -> Token -> Token -> Token data Annotation DisableComment :: Integer -> Annotation SourceOverride :: String -> Annotation ShellOverride :: String -> Annotation data ConditionType DoubleBracket :: ConditionType SingleBracket :: ConditionType tokenEquals :: Token -> Token -> Bool 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 GHC.Show.Show ShellCheck.AST.Token instance GHC.Classes.Eq ShellCheck.AST.ConditionType instance GHC.Show.Show ShellCheck.AST.ConditionType instance GHC.Classes.Eq ShellCheck.AST.Annotation instance GHC.Show.Show ShellCheck.AST.Annotation instance GHC.Classes.Eq ShellCheck.AST.CaseType instance GHC.Show.Show ShellCheck.AST.CaseType instance GHC.Classes.Eq ShellCheck.AST.FunctionParentheses instance GHC.Show.Show ShellCheck.AST.FunctionParentheses instance GHC.Classes.Eq ShellCheck.AST.FunctionKeyword instance GHC.Show.Show ShellCheck.AST.FunctionKeyword instance GHC.Classes.Eq ShellCheck.AST.AssignmentMode instance GHC.Show.Show ShellCheck.AST.AssignmentMode instance GHC.Classes.Eq ShellCheck.AST.Dashed instance GHC.Show.Show ShellCheck.AST.Dashed instance GHC.Classes.Eq ShellCheck.AST.Quoted instance GHC.Show.Show ShellCheck.AST.Quoted 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.Token module ShellCheck.Interface newtype SystemInterface m SystemInterface :: (String -> m (Either ErrorMessage String)) -> SystemInterface m [siReadFile] :: SystemInterface m -> String -> m (Either ErrorMessage 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 newParseSpec :: ParseSpec emptyCheckSpec :: CheckSpec newPositionedComment :: PositionedComment newComment :: Comment instance GHC.Show.Show ShellCheck.Interface.ColorOption instance GHC.Classes.Eq ShellCheck.Interface.ColorOption instance GHC.Classes.Ord ShellCheck.Interface.ColorOption instance GHC.Classes.Eq ShellCheck.Interface.TokenComment instance GHC.Show.Show ShellCheck.Interface.TokenComment instance GHC.Classes.Eq ShellCheck.Interface.CheckResult instance GHC.Show.Show ShellCheck.Interface.CheckResult instance GHC.Classes.Eq ShellCheck.Interface.ParseResult instance GHC.Show.Show ShellCheck.Interface.ParseResult instance GHC.Classes.Eq ShellCheck.Interface.PositionedComment instance GHC.Show.Show ShellCheck.Interface.PositionedComment instance GHC.Classes.Eq ShellCheck.Interface.Comment instance GHC.Show.Show ShellCheck.Interface.Comment instance GHC.Classes.Eq ShellCheck.Interface.Position instance GHC.Show.Show ShellCheck.Interface.Position instance GHC.Classes.Eq ShellCheck.Interface.CheckSpec instance GHC.Show.Show ShellCheck.Interface.CheckSpec 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.ExecutionMode instance GHC.Show.Show ShellCheck.Interface.ExecutionMode instance GHC.Classes.Eq ShellCheck.Interface.ParseSpec instance GHC.Show.Show ShellCheck.Interface.ParseSpec instance GHC.Classes.Eq ShellCheck.Interface.Shell instance GHC.Show.Show ShellCheck.Interface.Shell module ShellCheck.Data shellcheckVersion :: String internalVariables :: [[Char]] variablesWithoutSpaces :: [[Char]] arrayVariables :: [[Char]] commonCommands :: [[Char]] nonReadingCommands :: [[Char]] sampleWords :: [[Char]] binaryTestOps :: [[Char]] unaryTestOps :: [[Char]] shellForExecutable :: String -> Maybe Shell 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] module ShellCheck.Formatter.TTY format :: FormatterOptions -> IO Formatter module ShellCheck.Formatter.JSON format :: IO Formatter instance Data.Aeson.Types.ToJSON.ToJSON ShellCheck.Interface.PositionedComment module ShellCheck.Formatter.GCC format :: IO Formatter module ShellCheck.Formatter.CheckStyle format :: IO Formatter module ShellCheck.ASTLib 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 bracedString :: Token -> [Char] isArrayExpansion :: Token -> Bool mayBecomeMultipleArgs :: Token -> Bool willBecomeMultipleArgs :: Token -> Bool willConcatInAssignment :: Token -> Bool getLiteralString :: Token -> Maybe String onlyLiteralString :: Token -> String getUnquotedLiteral :: Token -> Maybe [Char] getTrailingUnquotedLiteral :: Token -> Maybe Token getLeadingUnquotedString :: Token -> Maybe String getGlobOrLiteralString :: Token -> Maybe String getLiteralStringExt :: (Token -> Maybe String) -> Token -> Maybe String isLiteral :: Token -> Bool getWordParts :: Token -> [Token] braceExpand :: Token -> [Token] getCommand :: Token -> Maybe Token getCommandName :: Token -> Maybe String getCommandTokenOrThis :: Token -> Token getCommandNameAndToken :: Token -> (Maybe String, Token) getCommandNameFromExpansion :: Token -> Maybe String getCommandBasename :: Token -> Maybe [Char] isAssignment :: Token -> Bool isOnlyRedirection :: Token -> Bool isFunction :: Token -> Bool isBraceExpansion :: Token -> Bool getCommandSequences :: Token -> [[Token]] getAssociativeArrays :: Token -> [String] data PseudoGlob PGAny :: PseudoGlob PGMany :: PseudoGlob PGChar :: Char -> PseudoGlob wordToPseudoGlob :: Token -> Maybe [PseudoGlob] wordToExactPseudoGlob :: Token -> Maybe [PseudoGlob] simplifyPseudoGlob :: [PseudoGlob] -> [PseudoGlob] pseudoGlobsCanOverlap :: [PseudoGlob] -> [PseudoGlob] -> Bool pseudoGlobIsSuperSetof :: [PseudoGlob] -> [PseudoGlob] -> Bool wordsCanBeEqual :: Token -> Token -> Bool isQuoteableExpansion :: Token -> 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.Show.Show ShellCheck.Parser.HereDocContext instance GHC.Show.Show ShellCheck.Parser.Context instance GHC.Classes.Eq ShellCheck.Parser.ParseNote instance GHC.Show.Show ShellCheck.Parser.ParseNote instance GHC.Classes.Eq ShellCheck.Parser.Note instance GHC.Show.Show ShellCheck.Parser.Note 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 -> [StackData] -> Map Id Token -> Shell -> Bool -> Token -> Parameters [hasLastpipe] :: Parameters -> Bool [hasSetE] :: Parameters -> Bool [variableFlow] :: Parameters -> [StackData] [parentMap] :: Parameters -> Map Id Token [shellType] :: Parameters -> Shell [shellTypeSpecified] :: Parameters -> Bool [rootNode] :: Parameters -> Token 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 :: Token -> AnalysisSpec pScript :: [Char] -> Maybe Token producesComments :: Checker -> String -> Maybe Bool makeComment :: Severity -> Id -> Code -> String -> TokenComment addComment :: 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 () makeParameters :: AnalysisSpec -> Parameters containsSetE :: 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 determineShell :: Token -> Shell executableFromShebang :: String -> String getParentTree :: Token -> Map Id Token getTokenMap :: Token -> Map Id Token isStrictlyQuoteFree :: Map Id Token -> Token -> Bool isQuoteFree :: Map Id Token -> Token -> Bool isQuoteFreeNode :: Bool -> 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] pathTo :: MonadReader Parameters m => Token -> m [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] prop_getOffsetReferences1 :: Bool prop_getOffsetReferences2 :: Bool prop_getOffsetReferences3 :: Bool prop_getOffsetReferences4 :: Bool getOffsetReferences :: String -> [String] getReferencedVariables :: Map Id Token -> Token -> [(Token, Token, [Char])] 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 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_getBracedReference12 :: Bool prop_getBracedReference13 :: Bool getBracedReference :: [Char] -> [Char] prop_getBracedModifier1 :: Bool prop_getBracedModifier2 :: Bool prop_getBracedModifier3 :: Bool getBracedModifier :: [Char] -> [Char] potentially :: Monad m => Maybe (m ()) -> m () headOrDefault :: () => p -> [p] -> p (!!!) :: () => [a] -> Int -> Maybe a whenShell :: (MonadReader Parameters m, Foldable t) => t Shell -> m () -> m () filterByAnnotation :: AnalysisSpec -> Parameters -> [TokenComment] -> [TokenComment] isCountingReference :: Token -> Bool isQuotedAlternativeReference :: Token -> Bool getGnuOpts :: String -> Token -> Maybe [(String, Token)] getBsdOpts :: String -> Token -> Maybe [(String, Token)] getOpts :: (Token -> [(Token, String)]) -> String -> Token -> Maybe [(String, Token)] runTests :: IO Bool instance GHC.Show.Show ShellCheck.AnalyzerLib.VariableState instance GHC.Show.Show ShellCheck.AnalyzerLib.StackData instance GHC.Show.Show ShellCheck.AnalyzerLib.DataType instance GHC.Show.Show ShellCheck.AnalyzerLib.DataSource instance GHC.Classes.Eq ShellCheck.AnalyzerLib.Scope instance GHC.Show.Show ShellCheck.AnalyzerLib.Scope 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.Commands checker :: Parameters -> Checker 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] runTests :: IO Bool module ShellCheck.Analyzer analyzeScript :: AnalysisSpec -> AnalysisResult module ShellCheck.Checker checkScript :: Monad m => SystemInterface m -> CheckSpec -> m CheckResult runTests :: IO Bool