PJ=      !"#$%&'()*+,-./0123456789:;<Safe357 =>?@ABCDEFBCDE =>?@ABCDENone35[The pattern entity holds a name and pattern that is compiled when the rules are evaluatedG,TODO maybe change this to have the timestampHSet the I field ex. "doodle.md |+ ringBell "JSet the modify fieldKSet the delete fieldL Set both the I and M field to the same valueN Set the nameOPQRIMSGTUHJKLNVWXYZ[\]^_OPQRIMSGTUHJKLNVWXYZ[\]OPQRIMSGTUHJKLNVWXYZ[\]^_HJKLNNone4A sum type for the various issues that can be logged#logged every time an event is fired"logged every time an rule is fired%Configuration to run the file watcherA logger for the issues The directories to watch config for the file watcher A name for debugging mostly 5The test to determine if the rule actions should fire"The action to run on Modify eventsThe action to run on Add events"The action to run on Delete events*The test function to determine if a event  should get fired7The actions that are run when file events are triggered1Run the Rule action associated with the an event /Test to see if the rule should fire and fire it4Start watching a directory, and run the rules on it.2Setup all of the directory watches using the rules      None35C GThis is the key type of the package, it is where rules are accumulated.A polymorphic %. Exported for completeness, ignore. Add a 'add' callback ex. "*.png" |+ addToManifestAdd a 'modify' callback ex. /"*.c" |% [s|gcc -o$directory$basename.o $path|] Add a 'delete' callback ex. /"*.c" |- [s|gcc -o$directory$basename.o $path|]!CAdd the same callback for the 'add' and the 'modify' events. ex. #"*.md" |> [s|pandoc -t html $path|]Defined as: x ! f = x  f  f"xSet the name of a rule. Useful for debugging when logging is enabled. Rules names default to the glob pattern. ex. 9"*.md" |> [s|pandoc -t html $path|] |# "markdown to html"#Add a 'add' callback ex. add addToManifest "*.png"$Add a 'modify' callback ex. 0mod [s|gcc -o$directory$basename.o $path|] "*.c"%Add a 'delete' callback ex. 3delete [s|gcc -o$directory$basename.o $path|] "*.c"&CAdd the same callback for the 'add' and the 'modify' events. ex. +addModify [s|pandoc -t html $path|] "*.md" 'xSet the name of a rule. Useful for debugging when logging is enabled. Rules names default to the glob pattern. ex. Dname "markdown to html" $ addModify [s|pandoc -t html $path|] "*.md"`abcde !"#$%&'fg`abcde !"#$%&'`abcde !"#$%&'fg !"None()hi()hi()hiNone j[The logger type. This corresponds to the --log or -l argument. The valid options are  LogToStdout,  LogToFile, and NoLogger If  LogToFile a file can provide with the 0 field.00The file to log to. This is only used if the j field is set to  LogToFile7. This corresponds to the --log-file or -f argument.1The root directory to watch. This corresponds to the --root and -r argument. By default this is empty and the current directory is used.2=If true, main will recurse through all subdirectories of the  dirsToWatch field. Otherwise the  dirsToWatch^ will be used literally. By default this is true, and disabled with the --no-recurse-flag .3This corresponds to the debounce type used in the fsnotify library The argument for default main is --debounce or -b . Valid options are DebounceDefault, Debounce,  NoDebounce. If Debounce? is used, then a debounce amount must be specified with the 4.45The amount to debounce. This is only meaningful when 3 is set to ,<. It corresponds to the --debounce-amount or -a argument.5\poll interval if polling is used. This corresponds to the --poll-interval or -i argument.6RSets polling to true if used. This corresponds to the --should-poll or -p flag.;Simplest way to create a file watcher app. Set your main equal to defaultMain and you are good to go. See the module documentation for examples.#The command line is parsed to make .T value. For more information on the arguments that can be passed see the doc for .N and the run the executable made with defaultMain with the --help argument.<[A main file that uses manually supplied options instead of parsing the passed in arguments.*+,-./j0123456789:klmnopqrst;<u*+,-./j0123456789:klmnopqrst;<*+,-. /j0123456789:klmnopqrst;<uNone,  !"#$%&'()*+,-./0123456789:;<,; !"#$%&'*+,-789:./0123456<  ()v       !"#$%&'()*+,-./00123456789:;<=>?@ABCDEFGHIJ$%&'(K LMNOPQRSTUVWX#YZ[\]^_`abcdefghiUjklmtwitc_AWFBKLRLjsA45l6xCdXDSeTwitchTwitch.InternalRule Twitch.Path Twitch.RuleTwitch.Internal Twitch.Run Twitch.Main RuleIssueRuleIssueIEvent IRuleFiredConfigloggerdirs watchConfig InternalRulenamefileTestmodifyadddeleteFileTestActiontoInternalRulefireRuletestAndFireRulesetupRuleForDir setupRules$fDefaultConfig $fShowConfig$fShowInternalRule$fDefaultInternalRuleDepDepM|+|%|-|>|# addModifyrun runWithConfig DebounceTypeDebounceDefaultDebounce NoDebounceOptionslogFilerootrecurseThroughDirectoriesdebouncedebounceAmount pollInterval usePolling LoggerType LogToStdout LogToFileNoLogger defaultMaindefaultMainWithOptionsgetDirectoryContentsPathfileDirContents findAllFilesfindImmediateFilesfindImmediateDirs findAllDirs findFilesfindDirscanonicalizeDirPathdirec_KowvXytSqazBcvN7MGpFtgSystem.DirectorycanonicalizePath RuleActionPatternCompliationFailedpattern PatternTextNameaddFmodifyFdeleteF addModifyFnameFmakeAbsolutePath makeAbsolutecompilePattern$fIsStringRule $fDefaultRuleunDepMrunDeprunDepWithStateaddRule modHeadRule$fIsStringDepM $fMonoidDepMdepToRulesWithCurrentDir depToRuleslog concatMapMtoLoggerdropDoubleQuotesstripDoubleQuotes readFilePathpOptionstoDBoptionsToConfigopts$fDefaultOptions