-- 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.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