h$_      !"#$%&'( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"""""""""""""#$%&'()*+,-./011111111111111111123344444444455556666777777777777777777777777777888889999999999999999999::::::::;;;;;;;;;;;<<<<<====================>>>>>>??????@@@@@@@@@@@@A+Shared code for individual command handlers(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNonezheadroom Bootstraps RIO application using provided environment data and flag whether to run in debug mode.headroom#function returning environment dataheadroomwhether to run in debug modeheadroomRIO application to executeheadroomexecution result Extra functionality for coercion(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNoneheadroomAllows to map the coercible value. This might be useful for example to change the value within newtype6, without manually unwrapping and wrapping the value.import qualified RIO.Text as T*newtype Foo = Foo Text deriving (Eq, Show)inner T.toUpper (Foo "hello") Foo "HELLO"headroom function to modify coerced valueheadroomvalue to modifyheadroommodified value"Extra functionality for enum types(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone headroomEnum data type, capable to (de)serialize itself from/to string representation. Can be automatically derived by GHC using the DeriveAnyClass extension.headroom Returns list of all enum values.data Test = Foo | Bar deriving (Bounded, Enum, EnumExtra, Eq, Ord, Show)allValues @Test [Foo,Bar]headroomReturns all values of enum as single string, individual values separated with comma.data Test = Foo | Bar deriving (Bounded, Enum, EnumExtra, Eq, Ord, Show)allValuesToText @Test "Foo, Bar"headroom:Returns textual representation of enum value. Opposite to .data Test = Foo | Bar deriving (Bounded, Enum, EnumExtra, Eq, Ord, Show)enumToText Bar"Bar"headroomReturns enum value from its textual representation. Opposite to .data Test = Foo | Bar deriving (Bounded, Enum, EnumExtra, Eq, Ord, Show)"(textToEnum "Foo") :: (Maybe Test)Just FooSimplified variant of Data.Has(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone-headroomHandy type alias that allows to avoid ugly type singatures. Allows to transform this: 3foo :: (Has (Network (RIO env)) env) => RIO env () into *foo :: (HasRIO Network env) => RIO env () headroomImplementation of the Has type class pattern.   Custom functionality related to lens(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNoneheadroomA template haskell function to build lenses for a record type. This function differs from the BC function in that it does not require the record fields to be prefixed with underscores and it adds an L= suffix to lens names to make it clear that they are lenses.headroomSame as ,, but build lenses only for selected fields.,Various functions for data (de)serialization(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNonelheadroomCustom Aeson encoding options used for generic mapping between data records and JSON or YAML values. Expects the fields in input to be without the prefix and with words formated in  symbol case (example: record field  uUserName, JSON field  user-name).headroom"Drops prefix from camel-case text.dropFieldPrefix "xxHelloWorld" "helloWorld"headroom=Transforms camel-case text into text cased with given symbol.symbolCase '-' "fooBar" "foo-bar"headroomPretty prints given data as YAML.headroomword separator symbolheadroom input textheadroomprocessed textheadroomdata to pretty printheadroompretty printed YAML output-Simple enrichment of YAML configuration stubs(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone !uheadroom#Represents type of the field value.headroomtype of YAML arrayheadroomtype of YAML stringheadroom6Simple wrapper representing single step of enrichment.headroom$takes input text and does enrichmentheadroom Generates YAML, array field from given list and field name.headroom Generates YAML- string from given text value and field name.headroomReplaces empty value of given field with actual generated value.headroominput list used as valueheadroom field nameheadroomgenerated fields as (valueType, generatedField)headroominput text valueheadroom field nameheadroomgenerated fields as (valueType, generatedField)headroom field nameheadroomfield value generator functionheadroomresulting enrichment step  *Additional utilities for text manipulation(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone +Q!headroom Similar to ?, but tries to find common prefix for all lines in given text.1commonLinesPrefix "-- first\n-- second\n-- third" Just "-- ""headroom Similar to DE4, but replaces only very first occurence of pattern. replaceFirst ":" "/" "a : b : c" "a / b : c"#headroom) "foo zz\nbar""T: foo zz\nT: bar"$headroom Similar to ##, but the mapping function returns , which gives some more control over outcome. After mapping over all individual lines, results are folded and concatenated, which allows for example filtering out some lines.mapLinesF (\l -> if l == "bar" then Nothing else Just l) "foo\nbar""foo"%headroomSame as  , but takes  as input instead of .read "123" :: Maybe IntJust 123&headroom Similar to ", but does not automatically adds n at the end of the text. Advantage is that when used together with ', it doesn't ocassionaly change the newlines ad the end of input text: fromLines . toLines $ "foo\nbar" "foo\nbar""fromLines . toLines $ "foo\nbar\n" "foo\nbar\n"Other examples: fromLines []""fromLines ["foo"]"foo"fromLines ["first", "second"]"first\nsecond"!fromLines ["first", "second", ""]"first\nsecond\n"'headroom Similar to , but does not drop trailing newlines from output. Advantage is that when used together with &, it doesn't ocassionaly change the newlines ad the end of input text: fromLines . toLines $ "foo\nbar" "foo\nbar""fromLines . toLines $ "foo\nbar\n" "foo\nbar\n"Other examples: toLines ""[]toLines "first\nsecond"["first","second"]toLines "first\nsecond\n"["first","second",""]!headroom lines of text to find prefix forheadroomfound longest common prefixs#headroom%function to map over individual linesheadroom input textheadroomresulting text$headroom$function to map over inividual linesheadroom input textheadroomresulting text%headroominput text to parseheadroom parsed value&headroom lines to joinheadroom!text joined from individual lines'headroomtext to break into linesheadroomlines of input text!"#$%&'%!"#$&' 4Custom data specific to file support implementations(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone-(headroom%Additional template data required by Haskell file support*headroom offsets for Haddock fields+headroom+Offsets for selected fields extracted from Haddock module header.-headroom offset for  Copyright field.headroom:Additional template data extracted from the template file./headroomadditional template data for Haskell0headroom$no additional template data provided ()*+,-./0 ./0+,-()* Data types for Headroom.FileType(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone:17headroom#Supported type of source code file.8headroom support for C programming language9headroom support for C++ programming language:headroom support for CSS;headroom support for Dart programming language<headroom support for Go programming language=headroom support for Haskell programming language>headroom support for HTML?headroom support for Java programming language@headroom support for  JavaScript programming languageAheadroom support for Kotlin programming languageBheadroom support for PHP programming languageCheadroom support for  PureScript programming languageDheadroom support for Rust programming languageEheadroom support for Scala programming languageFheadroom support for Shell7FEDCBA@?>=<;:987FEDCBA@?>=<;:98 Key-value persistent store(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone '(/2<>?7 Mheadroom$Path to the store (e.g. path of the SQLite database on filesystem).Oheadroom Type-safe. representation of the key for specific value.QheadroomRepresents way how to encode/decode concrete types into textual representation used by the store to hold values.Rheadroom*Encodes value into textual representation.Sheadroom*Decodes value from textual representation.TheadroomPolymorphic record composed of  key-value store operations, allowing to abstract over concrete implementation without (ab)using  type classes.XheadroomPuts the value for given O into the store.YheadroomGets the value for given O from the store.Zheadroom"Constructs persistent instance of T that uses SQLite as a backend.[headroom0Constructs non-persistent in-memory instance of T.\headroomConstructor function for O.Rheadroomvalue to encodeheadroomtextual representationSheadroomvalue to decodeheadroomdecoded value (if available)Xheadroomkey for the valueheadroomvalue to put into storeheadroomoperation resultYheadroomkey for the valueheadroomvalue (if found)Zheadroompath of the store locationheadroomstore instanceMNOPQRSTUVWXYZ[\YXTUVWQRSOPMN[Z\ Data types for post-processing(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone;vheadroomDefinition of post-processor6, i.e. function, that is applied to already rendered license header4, performs some logic and returns modified text of license header. Given that the  reader monad and ? transformer is used, any configuration is provided using the env& environment. When combined with the Headroom.Data.Has; monad, it provides powerful way how to combine different post-processors and environments.Structure of post-processor Text -> Reader env Text J J J JJ rendered text of license header J J JJ environment holding possible configuration J JJ modified license header text vwvw 0Type safe representation of analyzed source code(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone&<D zheadroom Represents analyzed source code.|headroom%Type alias for analyzed line of code.}headroom+Represents type of the line in source code.~headroom Line of codeheadroomLine of commentheadroom Converts  into z2 using the given function to analyze each line's }. The analyzing function can hold any state that is accumulated as the text is processed, for example to hold some info about already processed lines.headroomConverts analyzed z back into .headroomFinds very first line matching given predicate and optionally performs some operation over it.headroomFinds very last line matching given predicate and optionally performs some operation over it.headroom3Strips empty lines at the beginning of source code.?stripStart $ SourceCode [(Code, ""), (Code, "foo"), (Code, "")]#SourceCode [(Code,"foo"),(Code,"")]headroom-Strips empty lines at the end of source code.=stripEnd $ SourceCode [(Code, ""), (Code, "foo"), (Code, "")]#SourceCode [(Code,""),(Code,"foo")]headroomCuts snippet from the source code using the given start and end position.cut 1 3 $ SourceCode [(Code, "1"), (Code, "2"),(Code, "3"),(Code, "4")]"SourceCode [(Code,"2"),(Code,"3")]headroom#initial state of analyzing functionheadroom/function that analyzes currently processed lineheadroomraw source code to analyzeheadroom analyzed zheadroom)source code to convert back to plain textheadroomresulting plain textheadroom"predicate (and transform) functionheadroomsource code to search inheadroomfirst matching line (if found)headroom"predicate (and transform) functionheadroomsource code to search inheadroomlast matching line (if found)headroomsource code to stripheadroomstripped source codeheadroomsource code to stripheadroomstripped source codeheadroom3index of first line to be included into the snippetheadroom)index of the first line after the snippetheadroomsource code to cutheadroom cut snippet z{|}~ }~|z{Application data types(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone:H] headroom&Supported type of open source license.headroom support for  Apache-2.0 licenseheadroom support for  BSD-3-Clause licenseheadroom support for GNU GPL2 licenseheadroom support for GNU GPL3 licenseheadroom support for MIT licenseheadroom support for MPL2 licenseheadroom Wraps the value of current year.headroomvalue of current yearheadroomTop-level of the Headroom exception hierarchy.headroomWraps given exception into .headroomUnwraps given exception from .headroomexception to wrapheadroomwrapped exceptionheadroomexception to unwrapheadroomunwrapped exception(Helper functions for regular expressions(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone QQ headroomException specific to the Headroom.Data.Regex module.headroom"given input cannot be compiled as regexheadroomRepresents compiled regex), encapsulates the actual implementation.headroomCompiles given regex in runtime. If possible, prefer the  quasi quotation version that does the same at  compile time.headroomSame as , but works with  and uses no additional options.headroomSame as , but instead of returning matched text it only indicates whether the given text matches the pattern or not.headroomA QuasiQuoter for regular expressions that does a compile time check.headroom!Replaces all occurences of given regex.headroom'Replaces only first occurence of given regex.headroom.Searches the text for all occurences of given regex.headroomCompiles the given text into regex in runtime. Note that if the regex cannot be compiled, it will throw runtime error. Do not use this function unless you know what you're doing.headroomregex to compileheadroomcompiled regexheadroom3a PCRE regular expression value produced by compileheadroom!the subject text to match againstheadroomthe result valueheadroom3a PCRE regular expression value produced by compileheadroom!the subject text to match againstheadroomthe result valueheadroompattern to replaceheadroomreplacement function (as fullMatch -> [groups] -> result)headroomtext to replace inheadroomresulting textheadroompattern to replaceheadroomreplacement function (as fullMatch -> [groups] -> result)headroomtext to replace inheadroomresulting textheadroomregex to search forheadroom input textheadroomfound occurences (as [(fullMatch, [groups])])headroomregex to compileheadroom compiled regex or runtime exception  ,Representation of reference to template file(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone  #$&?Vheadroom%Error related to template references.headroom$not a valid format for template nameheadroomURI protocol not supportedheadroom9Reference to the template (e.g. local file, URI address).headroom"template path on local file systemheadroomremote template URI adressheadroom Creates a  from given text. If the raw text appears to be valid URL with either http or https" as protocol, it considers it as , otherwise it creates .>mkTemplateRef "/path/to/haskell.mustache" :: Maybe TemplateRef3Just (LocalTemplateRef "/path/to/haskell.mustache")mkTemplateRef "https://foo.bar/haskell.mustache" :: Maybe TemplateRefJust (UriTemplateRef (URI {uriScheme = Just "https", uriAuthority = Right (Authority {authUserInfo = Nothing, authHost = "foo.bar", authPort = Nothing}), uriPath = Just (False,"haskell.mustache" :| []), uriQuery = [], uriFragment = Nothing}))headroomRenders given  into human-friendly text.headroom input textheadroomcreated  (or error)headroom to renderheadroom rendered text  Post-processor! for updating years in copyrights(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone ?[uheadroom#Mode that changes behaviour of the  function.headroom+updates years in copyrights for all authorsheadroom5updates years in copyrights only for selected authorsheadroomNon-empty list of authors for which to update years in their copyrights.headroomPost-processor that updates years and year ranges in any present copyright statements.Reader Environment Parameters value of the current year,mode specifying the behaviour of the updaterheadroom-Updates years and years ranges in given text.3updateYears (CurrentYear 2020) "Copyright (c) 2020""Copyright (c) 2020"3updateYears (CurrentYear 2020) "Copyright (c) 2019""Copyright (c) 2019-2020"8updateYears (CurrentYear 2020) "Copyright (c) 2018-2020""Copyright (c) 2018-2020"8updateYears (CurrentYear 2020) "Copyright (c) 2018-2019""Copyright (c) 2018-2020"headroom current yearheadroomtext to updateheadroomtext with updated years/Type safe representation of Haskell PVP version(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone _ headroomType safe representation of PVP version.headroomfirst major versionheadroomsecond major versionheadroom minor versionheadroompatch level versionheadroomParses  from given text.parseVersion "0.3.2.0"Just (Version {vMajor1 = 0, vMajor2 = 3, vMinor = 2, vPatch = 0})headroomPrints  in major1.major2.minor.patch format.printVersion (Version 0 3 2 0) "0.3.2.0"headroom Similar to , but adds the v( prefix in front of the version number.printVersionP (Version 0 3 2 0) "v0.3.2.0"headroomQuasiQuoter for defining  values checked at compile time.[pvp|1.2.3.4|]:Version {vMajor1 = 1, vMajor2 = 2, vMinor = 3, vPatch = 4}headroom input text to parse version fromheadroomparsed headroom to printheadroomtextual representation  UI component for message box(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone aheadroomData type for message box.headroomType of the message box (infowarningerror).headroominfo message typeheadroomwarning message typeheadroomerror message typeheadroomCreates  of type .headroomCreates  of type .headroomCreates  of type .  $UI component for displaying progress(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNonecheadroomProgress indication. First argument is current progress, second the maximum value.headroom'Zips given list with the progress info.zipWithProgress ["a", "b"]'[(Progress 1 2,"a"),(Progress 2 2,"b")]headroomlist to zip with progressheadroom zipped resultF UI Components(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNonede"UI components for rendering tables(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNonee6headroom"Represents two columns wide table.Data types for Headroom.Variables(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNonefeheadroomMap of static and dynamic variables. Use G> function for more convenient construction of this data type.Extensible templating support(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone k~ headroom!Error during processing template.headroommissing variable valuesheadroomerror parsing raw template textheadroom Type class& representing supported template file.headroomReturns list of supported file extensions for this template type.headroom$Parses template from given raw text.headroomRenders parsed template and replaces all variables with actual values.headroomReturns the raw text of the template, same that has been parsed by  method.headroomReturns a reference to template source, from which this template was loaded.headroom(Returns empty template of selected type.headroom!list of supported file extensionsheadroomreference to template sourceheadroomraw template textheadroomparsed templateheadroomvalues of variables to replaceheadroomparsed template to renderheadroomrendered template textheadroom.template for which to return raw template textheadroomraw template textheadroom&template for which to return referenceheadroomtemplate reference  Support for template variables(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone pheadroomConstructor function for  data type. mkVariables [("key1", "value1")](Variables (fromList [("key1","value1")])headroomDynamic variables& that are common for all parsed files. _current_year - current yearheadroom#Parses variables from raw input in  key=value format.parseVariables ["key1=value1"](Variables (fromList [("key1","value1")])headroomCompiles variable values that are itself mini-templates, where their variables will be substituted by other variable values (if possible). Note that recursive variable reference and/or cyclic references are not supported.,import Headroom.Template.Mustache (Mustache)let compiled = compileVariables @Mustache $ mkVariables [("name", "John"), ("msg", "Hello, {{ name }}")]let expected = mkVariables [("name", "John"), ("msg", "Hello, John")]compiled == Just expectedTrueheadroom pairs of  key-valueheadroomconstructed variablesheadroom current yearheadroommap of dynamic variablesheadroomlist of raw variablesheadroomparsed variablesheadroominput variables to compileheadroomcompiled variablesImplementation of Mustache template support(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone rheadroomThe Mustache template.headroom Support for Mustache templates.H Safe-InferredrO)Application metadata (name, vendor, etc.)(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone vrheadroom5Type of the template format used for license headers.headroom%Application version, as specified in headroom.cabal file.headroomList of versions that made breaking changes into YAML configuration and require some migration steps to be performed by end-user.headroom$Name of the YAML configuration file.headroom*Name of the global configuration directoryheadroom+Name of the YAML global configuration file.headroomName of the global cache file.headroomFull product description.headroom Product info.headroom Product name.headroomProduct vendor.headroom0Product documentation website for given version.headroom8Link to configuration documentation for current version.headroom*Product migration guide for given version.headroomProduct source code repository.Network related IO operations(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone zC headroom$Error related to network operations.headroomconnection failureheadroominvalid response statusheadroomgiven URI is not validheadroomPolymorphic record of functions performing network IO operations.headroomdownloads remote contentheadroom;Type of a function that returns content of remote resource.headroomConstructs new  that performs real network IO operations.headroom(Downloads content of remote resource as . Note that only http and https( protocols are supported at this moment.headroomURI of remote resourceheadroomdownloaded contentheadroomURI of remote resourceheadroomdownloaded content  Data types for Headroom configuration(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone #$/28:<=>?IheadroomException specific to the Headroom.Configuration module.headroom>some of the required configuration keys has not been specifiedheadroomillegal configuration for headroom+Represents single key in the configuration.headroomno configuration for file-extensionsheadroom"no configuration for header syntaxheadroomno configuration for margin between header top and preceding codeheadroomno configuration for margin between header top and start of fileheadroomno configuration for margin between header bottom and following codeheadroomno configuration for margin between header bottom and end of fileheadroomno configuration for  put-afterheadroomno configuration for  put-beforeheadroomno configuration for run-modeheadroomno configuration for  source-pathsheadroomno configuration for excluded-pathsheadroomno configuration for exclude-ignored-pathsheadroom'no configuration for built in templatesheadroomno configuration for  variablesheadroomno configuration for enabledheadroomAlias for partial variant of .headroomAlias for complete variant of .headroom Group of ) configurations for supported file types.headroomconfiguration for Cheadroomconfiguration for C++headroomconfiguration for CSSheadroomconfiguration for Dartheadroomconfiguration for Goheadroomconfiguration for Haskellheadroomconfiguration for HTMLheadroomconfiguration for Javaheadroomconfiguration for  JavaScriptheadroomconfiguration for Kotlinheadroomconfiguration for PHPheadroomconfiguration for  PureScriptheadroomconfiguration for Rustheadroomconfiguration for Scalaheadroomconfiguration for ShellheadroomAlias for partial variant of .headroomAlias for complete variant of .headroom*Configuration for specific license header.headroom%list of file extensions (without dot)headroom9margin between header top and preceding code (if present)headroommargin between header top and start of file (if no code is between)headroomData type representing state of given configuration data type.headroompartial configuration, could be combined with another or validated to produce the complete configurationheadroomcomplete configuration, result of combining and validation of partial configuration Support for post-processors(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone #$/>?6headroom'Environemnt data type for the composed post-processor ().headroom current yearheadroomconfiguration of post-processorheadroommode used by the  post-processorheadroomConstructor function for ! data type. This function takes  as argument, because it performs template compilation on selected fields of .headroom Runs the post-processing function using the given  environment and text of rendered license header as input.headroomComposition of various post-processors!, which environment is based on YAML configuration and which can be enabled/disabled to fit end user's needs.headroomTakes already rendered license header7 and post-process it based on the given configuration.headroom current yearheadroomtemplate variablesheadroomconfiguration for post-processorsheadroomenvironment data typeheadroompost-processor to runheadroomenvironment valueheadroomtext of rendered license headerheadroomprocessed text of license headerheadroomconfiguration of post-processorsheadroom composed post-processorheadroom6configuration used to define post-processing behaviourheadroomrendered text of license headerheadroompost-processed text of license header  Data types for Headroom.Header(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone headroom/Represents info about concrete header template.headroomheader configurationheadroomextra template data extracted by the correcponding file type supportheadroom%type of the file this template is forheadroomparsed templateheadroom1Info extracted about the source code file header.headroomtype of the fileheadroom configuration for license headerheadroom#position of existing license headerheadroomadditional extracted variables  $Logic for sanitizing license headers(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone headroom2Tries to find comment prefix in given comment. By prefix it's meant either the line prefix used for block comment syntax (like *> at start of each line between opening and closing pattern - * *) or line comment syntax (just the syntax for comment itself - like // or --:). If such prefix is found, it's then added to the input .import Headroom.Data.Regex (re)findPrefix (BlockComment [re|^\/\*|] [re|\*\/$|] Nothing) "/*\n * foo\n * bar\n */",BlockComment "^\\/\\*" "\\*\\/$" (Just " *")headroomSanitizes given header text to make sure that each comment line starts with appropriate prefix (if defined within given ). For block comments, this is to make it visually unified, but for line comments it's necessary in order not to break syntax of target source code file.import Headroom.Data.Regex (re)sanitizeSyntax (LineComment [re|^--|] (Just "--")) "-- foo\nbar""-- foo\n-- bar"headroom&Strips comment syntax from given text.import Headroom.Data.Regex (re)stripCommentSyntax (LineComment [re|^--|] (Just "--")) "-- a\n-- b""a\n b"headroom&describes comment syntax of the headerheadroomtext containint the commentheadroominput  with added prefix (if found)headroom0header syntax definition that may contain prefixheadroomheader to sanitizeheadroomsanitized headerheadroomcopyright header syntaxheadroom)input text from which to strip the syntaxheadroomprocessed text &Logic for handlig supported file types(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone#$5headroomReturns 7 for given file extension (without dot), using configured values from the .headroom/Lists all recognized file extensions for given 7$, using configured values from the .headroomReturns the proper  for the given 7, selected from the .headroomlicense headers configurationheadroomfile extension (without dot)headroomfound 7headroomlicense headers configurationheadroom7 for which to list extensionsheadroom#list of appropriate file extensionsheadroomlicense headers configurationheadroom selected 7headroom appropriate !!File system related IO operations(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone&headroomPolymorphic record composed of file system IO function types, allowing to abstract over concrete implementation. Whenever you need to use effectful functions from this module, consider using this record instead of using them directly, as it allows you to use different records for production code and for testing, which is not as easy if you wire some of the provided functions directly.headroomType of a function that writes file content in UTF-8 encoding.headroom=Type of a function that loads file content in UTF-8 encoding.headroomType of a function that recursively find all files on given path. If file reference is passed instead of directory, such file path is returned.headroomType of a function that obtains the user's home directory as an absolute path.headroomType of a function that obtains the current working directory as an absolute path.headroomType of a function that recursively find files on given path by their file types.headroomType of a function that recursively finds files on given path by file extensions.headroomType of a function that recursively finds files on given path whose filename matches the predicate.headroom Type of a function that returns : if the argument file exists and is not a directory, and  otherwise.headroomType of a function that creates new empty directory on the given path.headroom Creates new  that performs actual disk IO operations.headroomRecursively finds files on given path whose filename matches the predicate.headroom9Recursively finds files on given path by file extensions.headroom9Recursively find files on given path by their file types.headroomRecursively find all files on given path. If file reference is passed instead of directory, such file path is returned.headroomReturns file extension for given path (if file), or nothing otherwise.%fileExtension "path/to/some/file.txt" Just "txt"headroom$Loads file content in UTF8 encoding.headroomTakes list of patterns and file paths and returns list of file paths where those matching the given patterns are excluded.import Headroom.Data.Regex (re)excludePaths [[re|\.hidden|], [re|zzz|]] ["foo/.hidden", "test/bar", "x/zzz/e"] ["test/bar"] headroom file pathheadroom file contentheadroom write resultheadroom file pathheadroom file contentheadroompath to searchheadroomlist of found filesheadroom configuration of license headersheadroomlist of file typesheadroompath to searchheadroomlist of found filesheadroompath to searchheadroom%list of file extensions (without dot)headroomlist of found filesheadroompath to searchheadroompredicate to match filenameheadroom found filesheadroom path to checkheadroom'whether the given path is existing fileheadroompath of new directoryheadroomIO action resultheadroom)path from which to extract file extensionheadroomextracted file extensionheadroom$patterns describing paths to excludeheadroomlist of file pathsheadroomresulting list of file paths"Data types for Headroom.FileSupport module(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNoneheadroomType of a function that extracts variables from analyzed source code file.headroomType of a function that extracts additional template data from template.headroom-Set of functions used to analyze source code.headroomoffset (in number of black chars) for 2nd and subsequent linesheadroominput text to indentheadroomprocessed text  2 Support for Haskell source code files(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone #$RheadroomImplementation of  for Haskell.33Support for handling various source code file types(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone#$&headroomReturns  for corresponding 7.headroom:Analyzes the raw source code of given type using provided .headroom! implementation used for analysisheadroomraw source code to analyzeheadroomanalyzed source code4)Operations with copyright/license headers(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone  #$?9 headroomExtracts info about the processed file to be later used by the header detection/manipulation functions.headroomConstructs new  from provided data.headroom/Adds given header at position specified by the 6. Does nothing if any header is already present, use  if you need to override it.headroom*Drops header at position specified by the  from the given source code. Does nothing if no header is present.headroom6Replaces existing header at position specified by the ( in the given text. Basically combines  with . If no header is present, then the given one is added to the text.headroomFinds header position in given text, where position is represented by line number of first and last line of the header (numbered from zero). Based on the  specified in given ., this function delegates its work to either  or .import Headroom.Data.Regex (re)let hc = HeaderConfig ["hs"] 0 0 0 0 [] [] (BlockComment [re|^{-|] [re|(? syntax, which is delimited with starting and ending pattern.import Headroom.Data.Regex (re)let sc = SourceCode [(Code, ""), (Comment, "{- HEADER -}"), (Code, ""), (Code,"")].findBlockHeader [re|^{-|] [re|(?"), (Code, "RESULT"), (Code, "<-"), (Code, "foo")]1splitSource [[re|->|]] [[re|<-|]] $ SourceCode ls(SourceCode [(Code,"text"),(Code,"->")],SourceCode [(Code,"RESULT")],SourceCode [(Code,"<-"),(Code,"foo")])let ls = [(Code, "text"), (Code, "->"), (Code, "RESULT"), (Code, "<-"), (Code, "foo")])splitSource [] [[re|<-|]] $ SourceCode ls(SourceCode [],SourceCode [(Code,"text"),(Code,"->"),(Code,"RESULT")],SourceCode [(Code,"<-"),(Code,"foo")]);splitSource [] [] $ SourceCode [(Code,"foo"), (Code,"bar")](SourceCode [],SourceCode [(Code,"foo"),(Code,"bar")],SourceCode [])headroom template infoheadroomtext used for detectionheadroomresulting file infoheadroom!configuration for license headersheadroom.type of source code files this template is forheadroomparsed templateheadroomresulting template infoheadroom additional info about the headerheadroomtext of the new headerheadroom#source code where to add the headerheadroom'resulting source code with added headerheadroom additional info about the headerheadroom.text of the file from which to drop the headerheadroom"resulting text with dropped headerheadroom additional info about the headerheadroomtext of the new headerheadroom,text of the file where to replace the headerheadroom#resulting text with replaced headerheadroom appropriate header configurationheadroom"text in which to detect the headerheadroomheader position (startLine, endLine)headroomstarting pattern (e.g. {- or /*)headroomending pattern (e.g. -} or */)headroom)source code in which to detect the headerheadroom/line number offset (adds to resulting position)headroomheader position &(startLine + offset, endLine + offset)headroomprefix pattern (e.g. -- or //)headroom)source code in which to detect the headerheadroom/line number offset (adds to resulting position)headroomheader position &(startLine + offset, endLine + offset)  5Template Haskell functions for Headroom.Embedded(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNoneheadroom.Embeds stub configuration file to source code.headroom1Embeds default configuration file to source code.headroom8Embeds default global configuration file to source code.headroomEmbeds  template file to the source code.headroom type of the licenseheadroomtype of the source code fileheadroomcontent of the appropriate template file6Embedded files(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNoneheadroomContent of dummy YAML( configuration file for the application.headroomDefault YAML configuration.headroomDefault YAML1 configuration for the global configuration file.headroom#License template for given license.headroom(license for which to return the templateheadroom(license for which to return the templateheadroom template text7Data types for Headroom.Command(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNonelheadroomOptions for the run command.headroomused Run command modeheadroomsource code file pathsheadroomsource paths to excludeheadroom whether to exclude ignored pathsheadroom!whether to use built-in templatesheadroomtemplate referencesheadroom raw variablesheadroomwhether to run in debug modeheadroomwhether to perform dry runheadroomOptions for the init command.headroompaths to source code filesheadroom license typeheadroomOptions for the gen command.headroom selected modeheadroomApplication command.headroomrun commandheadroomgen commandheadroominit command8Custom readers for optparse-applicative library(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone headroomReader for tuple of  and 7.headroom Reader for .headroom Reader for .headroom Reader for .headroomParses  and 7& from the input string, formatted as licenseType:fileType.parseLicense "bsd3:haskell"Just (BSD3,Haskell)9Global configutation(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone#$8? headroom4Data type representing global configuration options.headroomconfig for updaterheadroom-Data type representing updater configuration.headroomwhether to check for updatesheadroomhow ofter check for updatesheadroomChecks if global configuration YAML file is already present and if not, it creates one with default values.headroom Loads global configuration from YAML file.headroomParses global configuration YAML file.headroomPath to global configuration YAML file in user's directory.  :Update Manager for Headroom(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone #$?headroom Error during processing updates.headroomCheck whether newer version is available (if enabled by configuration).headroom5Fetches and parses latest version from update server.headroom"Parses latest version number from GitHub API response.headroomraw JSON response from GitHubheadroomparsed version;+Compatibility checks for YAML configuration(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone #$#headroomException specific to the Headroom.Configuration.Compat module.headroom7cannot parse version info from given YAML configurationheadroom-configuration has newer version than Headroomheadroom*given YAML configuration is not compatibleheadroomChecks whether the given not yet parsed YAML configuration is compatible, using list of versions that caused breaking changes into configuration.headroom7list of versions with breaking changes in configurationheadroomcurrent Headroom versionheadroom&raw, not yet parsed YAML configurationheadroom$detected compatible version or error<5Configuration handling (loading, parsing, validating)(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone #$/headroom6Loads and parses application configuration from given YAML file.headroom9Parses application configuration from given raw input in YAML format.headroom Makes full  from provided  (if valid).headroom Makes full  from provided  (if valid).headroom Makes full  from provided  (if valid).headroomraw input to parseheadroom parsed application configurationheadroomsource headroomfull headroomsource headroomfull headroom%determines file type of configurationheadroomsource headroomfull =Handler for the init command(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone #$>?headroom*Paths to various locations of file system.headroomRIO Environment for the init command.headroom Handler for init command.headroomRecursively scans provided source paths for known file types for which templates can be generated.headroom6Checks whether application config file already exists.headroominit command optionsheadroomexecution result  >Handler for the gen command.(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone headroomParses ( from combination of options from given .headroom Handler for  Generator command.headroom command from which to parse the headroomparsed headroom Generator command optionsheadroomexecution result? Logic for bootstrapping Headroom(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone #$?headroomBootstrap environment, containing pieces shared between all commands.headroomloaded global configurationheadroomRuns RIO application using provided environment data and flag whether to run in debug mode.headroomExecutes the initialization logic that should be performed before any other code is executed. During this bootstrap, for example global configuration is initialized and loaded, welcome message is printed to console and updates are checked.headroomShared SQLite-based T.headroom#function returning environment dataheadroomwhether to run in debug modeheadroomRIO application to executeheadroomexecution result@Handler for the run command.(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone #$&>?&headroom Handler for Run command.headroomLoads templates using given template references. If multiple sources define template for the same 70, then the preferred one (based on ordering of  is selected).headroomTakes path to the template file and returns detected type of the template.headroom%Performs post-processing on rendered license header, based on given configuration. Currently the main points are to: ,sanitize possibly corrupted comment syntax ()apply post-processors ()headroomRun command optionsheadroomexecution resultheadroomtemplate referencesheadroommap of templatesheadroompath to the template fileheadroomdetected template typeheadroom%syntax of the license header commentsheadroomtemplate variablesheadroomlicense header to post-processheadroompost-processed license headerA*Support for parsing command line arguments(c) 2019-2022 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone headroomParses command line arguments.IJKLMNOPQRSTUVWXYZ[\]^_`abbcdefghijklmnopq r r s t t u v w x y z { | } ~                                                                                      ElG   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"""""""""""""#$%&'()*+,-./011111111111111111123344444444455556666777777777777777777777777777888889999999999999999999::::::::;;;;;;;;;;;<<<<<====================>>>>>>?????L?@@@@@@@@@@@@AaHHHHHHHHII'headroom-0.4.3.0-CM44re29obUF0crFUQ0ru0Headroom.Data.CoerceHeadroom.Command.UtilsHeadroom.Data.EnumExtraHeadroom.Data.HasHeadroom.Data.LensHeadroom.Data.SerializationHeadroom.Config.EnrichHeadroom.Data.Text!Headroom.FileSupport.TemplateDataHeadroom.FileType.TypesHeadroom.IO.KVStoreHeadroom.PostProcess.TypesHeadroom.SourceCodeHeadroom.TypesHeadroom.Data.RegexHeadroom.Template.TemplateRef$Headroom.PostProcess.UpdateCopyrightHeadroom.Meta.VersionHeadroom.UI.MessageHeadroom.UI.ProgressHeadroom.UI.TableHeadroom.Variables.TypesHeadroom.TemplateHeadroom.VariablesHeadroom.Template.Mustache Headroom.MetaHeadroom.IO.NetworkHeadroom.Config.TypesHeadroom.PostProcessHeadroom.Header.TypesHeadroom.Header.SanitizeHeadroom.FileTypeHeadroom.IO.FileSystemHeadroom.FileSupport.TypesHeadroom.FileSupport.ShellHeadroom.FileSupport.ScalaHeadroom.FileSupport.RustHeadroom.FileSupport.PureScriptHeadroom.FileSupport.PHPHeadroom.FileSupport.KotlinHeadroom.FileSupport.JavaHeadroom.FileSupport.JSHeadroom.FileSupport.HTMLHeadroom.FileSupport.GoHeadroom.FileSupport.DartHeadroom.FileSupport.CSSHeadroom.FileSupport.CPPHeadroom.FileSupport.C$Headroom.FileSupport.Haskell.HaddockHeadroom.FileSupport.HaskellHeadroom.FileSupportHeadroom.HeaderHeadroom.Embedded.THHeadroom.EmbeddedHeadroom.Command.TypesHeadroom.Command.ReadersHeadroom.Config.GlobalHeadroom.UpdaterHeadroom.Config.CompatHeadroom.ConfigHeadroom.Command.InitHeadroom.Command.GenHeadroom.Command.BootstrapHeadroom.Command.RunHeadroom.Command Control.Lens makeLensesTreplace Headroom.UI mkVariablesPaths_headroomghc-primGHC.Primcoerce bootstrapinner EnumExtra allValuesallValuesToText enumToText textToEnumHasRIOHasgettermodifierhasLensviewL suffixLensessuffixLensesFor aesonOptionsdropFieldPrefix symbolCaseprettyPrintYAML ValueTypeArrayStringEnrichenrich withArraywithTextreplaceEmptyValue$fMonoidEnrich$fSemigroupEnrich $fEqValueType$fShowValueTypecommonLinesPrefix replaceFirstmapLines mapLinesFread fromLinestoLinesHaskellTemplateData'htdHaddockOffsetsHaddockOffsets hoCopyright TemplateDataHaskellTemplateDataNoTemplateData$fEqTemplateData$fShowTemplateData$fEqHaskellTemplateData'$fShowHaskellTemplateData'$fEqHaddockOffsets$fShowHaddockOffsetsFileTypeCCPPCSSDartGoHaskellHTMLJavaJSKotlinPHP PureScriptRustScalaShell$fBoundedFileType$fEnumFileType$fEnumExtraFileType $fEqFileType $fOrdFileType$fShowFileType StorePathValueKey ValueCodec encodeValue decodeValueKVStore kvGetValue kvPutValue PutValueFn GetValueFn sqliteKVStoreinMemoryKVStorevalueKey%$fSymbolToField"value"StoreRecordText!$fSymbolToField"id"StoreRecordKey $fAtLeastOneUniqueKeyStoreRecord$fOnlyOneUniqueKeyStoreRecord$fPersistFieldSqlStoreRecord$fPersistFieldStoreRecord$fPersistEntityStoreRecord$fValueCodecUTCTime$fValueCodecText $fEqStorePath$fShowStorePath $fEqValueKey$fShowValueKey $fShowKey $fReadKey$fEqKey$fOrdKey$fPathPieceKey$fToHttpApiDataKey$fFromHttpApiDataKey$fPersistFieldKey$fPersistFieldSqlKey $fToJSONKey $fFromJSONKey$fShowStoreRecord PostProcess$fMonoidPostProcess$fSemigroupPostProcess SourceCodeCodeLineLineTypeCodeCommentfromTexttoText firstMatching lastMatching stripStartstripEndcut$fEqSourceCode$fShowSourceCode$fSemigroupSourceCode$fMonoidSourceCode $fEqLineType$fShowLineType LicenseTypeApache2BSD3GPL2GPL3MITMPL2 CurrentYear unCurrentYear HeadroomErrortoHeadroomErrorfromHeadroomError$fExceptionHeadroomError$fShowHeadroomError$fFromJSONLicenseType$fBoundedLicenseType$fEnumLicenseType$fEnumExtraLicenseType$fEqLicenseType$fOrdLicenseType$fShowLicenseType$fEqCurrentYear$fShowCurrentYear RegexErrorCompilationFailedRegexcompilematchisMatchrescan compileUnsafe$fFromJSONRegex $fShowRegex $fEqRegex$fExceptionRegexError$fShowRegexErrorTemplateRefErrorUnrecognizedTemplateNameUnsupportedUriProtocol TemplateRef InlineRefLocalTemplateRefUriTemplateRef BuiltInRef mkTemplateRef renderRef$fFromJSONTemplateRef$fExceptionTemplateRefError$fEqTemplateRefError$fShowTemplateRefError$fEqTemplateRef$fOrdTemplateRef$fShowTemplateRefUpdateCopyrightModeUpdateAllAuthorsUpdateSelectedAuthorsSelectedAuthorsupdateCopyright updateYears$fEqUpdateCopyrightMode$fShowUpdateCopyrightMode$fEqSelectedAuthors$fShowSelectedAuthorsVersionvMajor1vMajor2vMinorvPatch parseVersion printVersion printVersionPpvp$fFromJSONVersion $fOrdVersion $fEqVersion $fShowVersionMessage MessageTypeInfoWarnError messageInfo messageWarn messageError$fDisplayMessageType$fDisplayMessage $fEqMessage $fShowMessage$fEqMessageType$fShowMessageTypeProgresszipWithProgress$fDisplayProgress $fEqProgress$fShowProgressTable2$fDisplayTable2 $fEqTable2 $fShowTable2 Variables$fMonoidVariables$fSemigroupVariables $fEqVariables$fShowVariables TemplateErrorMissingVariables ParseErrorTemplatetemplateExtensions parseTemplaterenderTemplate rawTemplate templateRef emptyTemplate$fExceptionTemplateError$fEqTemplateError$fShowTemplateErrordynamicVariablesparseVariablescompileVariables$fExceptionVariablesError$fEqVariablesError$fShowVariablesErrorMustachemCompiledTemplate mRawTemplate mTemplateRef$fTemplateMustache $fEqMustache$fShowMustache TemplateType buildVersionconfigBreakingChangesconfigFileNameglobalConfigDirNameglobalConfigFileName cacheFileName productDesc productInfo productName productVendorwebDocwebDocConfigCurrwebDocMigrationwebRepo NetworkErrorConnectionFailure InvalidStatus InvalidURLNetworknDownloadContentDownloadContentFn mkNetworkdownloadContent$fExceptionNetworkError$fEqNetworkError$fShowNetworkErrorConfigurationErrorMissingConfigurationMixedHeaderSyntaxConfigurationKeyCkFileExtensionsCkHeaderSyntaxCkMarginTopCodeCkMarginTopFileCkMarginBottomCodeCkMarginBottomFile CkPutAfter CkPutBefore CkRunMode CkSourcePathsCkExcludedPathsCkExcludeIgnoredPathsCkBuiltInTemplates CkVariables CkEnabledPtHeadersConfigCtHeadersConfig HeadersConfighscChscCpphscCsshscDarthscGo hscHaskellhscHtmlhscJavahscJs hscKotlinhscPhp hscPureScripthscRusthscScalahscShellPtHeaderConfigCtHeaderConfig HeaderConfighcFileExtensionshcMarginTopCodehcMarginTopFilehcMarginBottomCodehcMarginBottomFile hcPutAfter hcPutBeforehcHeaderSyntax PtAppConfig CtAppConfig AppConfig acRunMode acSourcePathsacExcludedPathsacExcludeIgnoredPathsacBuiltInTemplatesacTemplateRefs acVariablesacLicenseHeadersacPostProcessConfigsPtPostProcessConfigsCtPostProcessConfigsPostProcessConfigsppcsUpdateCopyrightPtPostProcessConfigCtPostProcessConfigPostProcessConfig ppcEnabled ppcConfigPtUpdateCopyrightConfigCtUpdateCopyrightConfigUpdateCopyrightConfiguccSelectedAuthorsGenMode GenConfigFile GenLicenseRunModeAddCheckDropReplace HeaderSyntax BlockComment LineComment:::PhasePartialComplete$fFromJSONBlockComment'$fFromJSONLineComment'$fFromJSONRunMode$fFromJSONUpdateCopyrightConfig$fFromJSONPostProcessConfig$fFromJSONPostProcessConfigs$fFromJSONAppConfig$fFromJSONHeadersConfig$fExceptionConfigurationError$fFromJSONHeaderConfig$fEqConfigurationError$fShowConfigurationError$fEqConfigurationKey$fShowConfigurationKey $fEqGenMode $fShowGenMode $fEqRunMode $fShowRunMode$fEqLineComment'$fGenericLineComment'$fShowLineComment'$fEqBlockComment'$fGenericBlockComment'$fShowBlockComment'$fEqHeaderSyntax$fShowHeaderSyntax$fMonoidHeadersConfig$fSemigroupHeadersConfig$fGenericHeadersConfig$fShowHeadersConfig$fShowHeadersConfig0$fEqHeadersConfig$fEqHeadersConfig0$fMonoidHeaderConfig$fSemigroupHeaderConfig$fGenericHeaderConfig$fShowHeaderConfig$fShowHeaderConfig0$fEqHeaderConfig$fEqHeaderConfig0$fMonoidAppConfig$fSemigroupAppConfig$fGenericAppConfig$fShowAppConfig$fShowAppConfig0 $fEqAppConfig$fEqAppConfig0$fMonoidPostProcessConfigs$fSemigroupPostProcessConfigs$fGenericPostProcessConfigs$fShowPostProcessConfigs$fShowPostProcessConfigs0$fEqPostProcessConfigs$fEqPostProcessConfigs0$fMonoidPostProcessConfig$fSemigroupPostProcessConfig$fGenericPostProcessConfig$fShowPostProcessConfig$fShowPostProcessConfig0$fEqPostProcessConfig$fEqPostProcessConfig0$fMonoidUpdateCopyrightConfig $fSemigroupUpdateCopyrightConfig$fGenericUpdateCopyrightConfig$fShowUpdateCopyrightConfig$fShowUpdateCopyrightConfig0$fEqUpdateCopyrightConfig$fEqUpdateCopyrightConfig0 ConfiguredEnv ceCurrentYearcePostProcessConfigsceUpdateCopyrightMode$fEqConfiguredEnv$fShowConfiguredEnvmkConfiguredEnv postProcessconfiguredPostProcesspostProcessHeader%$fHasUpdateCopyrightModeConfiguredEnv$fHasCurrentYearConfiguredEnvHeaderTemplatehtConfightTemplateData htFileType htTemplate HeaderInfo hiFileTypehiHeaderConfig hiHeaderPos hiVariables$fEqHeaderTemplate$fShowHeaderTemplate$fEqHeaderInfo$fShowHeaderInfo findPrefixsanitizeSyntaxstripCommentSyntax fileTypeByExtlistExtensionsconfigByFileType FileSystemfsCreateDirectoryfsDoesFileExist fsFindFilesfsFindFilesByExtsfsFindFilesByTypesfsGetCurrentDirectoryfsGetUserDirectory fsListFiles fsLoadFile fsWriteFile WriteFileFn LoadFileFn ListFilesFnGetUserDirectoryFnGetCurrentDirectoryFnFindFilesByTypesFnFindFilesByExtsFn FindFilesFnDoesFileExistFnCreateDirectoryFn mkFileSystem findFilesfindFilesByExtsfindFilesByTypes listFiles fileExtensionloadFile excludePathsExtractVariablesFnExtractTemplateDataFnSyntaxAnalysissaIsCommentStartsaIsCommentEnd FileSupportfsSyntaxAnalysisfsExtractTemplateDatafsExtractVariables fsFileTypedefaultFileSupport fileSupportHaddockModuleHeader hmhCopyright hmhLicense hmhMaintainerhmhPortability hmhStability hmhShortDesc hmhLongDescextractOffsetsextractModuleHeader indentField$fAlternativeP$fMonadP$fApplicativeP $fFunctorP$fEqHaddockModuleHeader$fShowHaddockModuleHeaderanalyzeSourceCodeextractHeaderInfoextractHeaderTemplate addHeader dropHeader replaceHeader findHeaderfindBlockHeaderfindLineHeader splitSourceembedConfigFileembedDefaultConfigembedDefaultGlobalConfig embedTemplateconfigFileStub defaultConfigdefaultGlobalConfiglicenseTemplateCommandRunOptions croRunModecroSourcePathscroExcludedPathscroExcludeIgnoredPathscroBuiltInTemplatescroTemplateRefs croVariablescroDebug croDryRunCommandInitOptionscioSourcePathscioLicenseTypeCommandGenOptions cgoGenModeCommandRunGenInit$fEqCommandRunOptions$fShowCommandRunOptions$fShowCommandInitOptions$fShowCommandGenOptions $fShowCommand licenseReaderlicenseTypeReader regexReadertemplateRefReader parseLicense GlobalConfig gcUpdates UpdaterConfigucCheckForUpdatesucUpdateIntervalDaysinitGlobalConfigIfNeededloadGlobalConfigparseGlobalConfigglobalConfigPath$fFromJSONUpdaterConfig$fFromJSONGlobalConfig$fEqGlobalConfig$fGenericGlobalConfig$fShowGlobalConfig$fEqUpdaterConfig$fGenericUpdaterConfig$fShowUpdaterConfig UpdaterErrorCannotDetectVersion checkUpdatesfetchLatestVersionparseLatestVersion$fExceptionUpdaterError$fEqUpdaterError$fShowUpdaterError VersionErrorCannotParseVersionNewerVersionDetectedUnsupportedVersioncheckCompatibility$fFromJSONVersionObj$fExceptionVersionError$fEqVersionError$fShowVersionError$fEqVersionObj$fShowVersionObj loadAppConfigparseAppConfig makeAppConfigmakeHeadersConfigmakeHeaderConfigPaths pConfigFile pTemplatesDirEnv envLogFunc envFileSystemenvInitOptionsenvPaths commandInitfindSupportedFileTypesdoesAppConfigExist $fHasPathsEnv$fHasFileSystemEnv$fHasCommandInitOptionsEnv$fHasLogFuncEnv$fExceptionCommandInitError$fEqCommandInitError$fShowCommandInitError parseGenMode commandGen$fExceptionCommandGenError$fEqCommandGenError$fShowCommandGenError BootstrapEnvbeGlobalConfigrunRIO' globalKVStore commandRunloadTemplateRefstypeOfTemplatepostProcessHeader'$fHasKVStoreEnv$fHasNetworkEnv$fHasCurrentYearEnv$fHasCommandRunOptionsEnv$fHasPostProcessConfigsEnv$fHasAppConfigEnv commandParser text-1.2.3.2 Data.TextcommonPrefixesbase Data.FoldableFoldable Text.Read readMaybeData.Text.InternalTextGHC.Baseunlineslinestransformers-0.5.6.2Control.Monad.Trans.ReaderReaderT)pcre-light-0.4.1.0-L5m9lsUJcz2BIYVXW3iRuGText.Regex.PCRE.Light.Char8version getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileNamebytestring-0.10.10.0Data.ByteString.Internal ByteString GHC.TypesTrueFalse