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 defghijklmnopqrstuvwxyz{|}~               !!!!!!!!!!!!!!!!!!"$+Shared code for individual command handlers(c) 2019-2020 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone )headroom 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 enum types(c) 2019-2020 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.(:set -XDeriveAnyClass -XTypeApplicationsdata 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.(:set -XDeriveAnyClass -XTypeApplicationsdata Test = Foo | Bar deriving (Bounded, Enum, EnumExtra, Eq, Ord, Show)allValuesToText @Test "Foo, Bar"headroom:Returns textual representation of enum value. Opposite to .:set -XDeriveAnyClassdata Test = Foo | Bar deriving (Bounded, Enum, EnumExtra, Eq, Ord, Show)enumToText Bar"Bar"headroomReturns enum value from its textual representation. Opposite to .:set -XDeriveAnyClassdata Test = Foo | Bar deriving (Bounded, Enum, EnumExtra, Eq, Ord, Show)"(textToEnum "Foo") :: (Maybe Test)Just FooSimplified variant of Data.Has(c) 2019-2020 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNoneheadroomImplementation of the Has type class pattern.   Custom functionality related to lens(c) 2019-2020 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone headroomA template haskell function to build lenses for a record type. This function differs from the #$ 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.  *Additional utilities for text manipulation(c) 2019-2020 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone  headroom) "foo zz\nbar""T: foo zz\nT: bar"headroomSame as  , but takes  as input instead of .read "123" :: Maybe IntJust 123headroom 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%function to map over individual linesheadroom input textheadroom result textheadroominput text to parseheadroom parsed valueheadroom lines to joinheadroom!text joined from individual linesheadroomtext to break into linesheadroomlines of input text  Data types for Headroom.FileType(c) 2019-2020 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone:` headroom#Supported type of source code file.headroom support for C programming languageheadroom support for C++ programming languageheadroom support for CSSheadroom support for Haskell programming languageheadroom support for HTMLheadroom support for Java programming languageheadroom support for  JavaScript programming languageheadroom support for Rust programming languageheadroom support for Scala programming languageheadroom support for Shell  Data types for license header functions(c) 2019-2020 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNoneA"headroomDefinition of license header function6, 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 license header function and environments.)Structure of License Header Function Type 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 "#"#,Various functions for data (de)serialization(c) 2019-2020 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone"&headroomCustom 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 text)headroomdata to pretty printheadroompretty printed YAML output&'()&'() Application data types(c) 2019-2020 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone %*headroomMetadata parsed from raw template, specific for selected  file type.,headroom+Offsets for selected fields extracted from Haddock module header..headroom offset for  Copyright field/headroom Wraps the value of current year.1headroomvalue of current year2headroomTop-level of the Headroom exception hierarchy.4headroomWraps given exception into 2.5headroomUnwraps given exception from 2.4headroomexception to wrapheadroomwrapped exception5headroomexception to unwrapheadroomunwrapped exception *+,-./012345 2354*+,-./01 (Helper functions for regular expressions(c) 2019-2020 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone +q?headroomException specific to the Headroom.Data.Regex module.@headroom"given input cannot be compiled as regexAheadroomRepresents compiled regex), encapsulates the actual implementation.CheadroomCompiles given regex in runtime. If possible, prefer the E quasi quotation version that does the same at  compile time.DheadroomSame as D, but works with  and uses no additional options.EheadroomA QuasiQuoter for regular expressions that does a compile time check.Fheadroom!Replaces all occurences of given regex.Gheadroom.Searches the text for all occurences of given regex.Cheadroomregex to compileheadroomcompiled regexDheadroom3a PCRE regular expression value produced by compileheadroom!the subject text to match againstheadroomthe result valueFheadroomregex to match what to replaceheadroomreplacement function (as fullMatch -> [groups] -> result)headroomtext to replace inheadroomresulting textGheadroomregex to search forheadroom input textheadroomfound occurences (as [(fullMatch, [groups])]) ?@ABCDEFG AB?@CDEFG License Header function! for updating years in copyrights(c) 2019-2020 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone ?0#Mheadroom#Mode that changes behaviour of the R function.Nheadroom+updates years in copyrights for all authorsOheadroom5updates years in copyrights only for selected authorsPheadroomNon-empty list of authors for which to update years in their copyrights.RheadroomLicense header function that updates years and year ranges in any present copyright statements.Reader Environment Parameters /value of the current yearM,mode specifying the behaviour of the updaterSheadroom-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"Sheadroom current yearheadroomtext to updateheadroomtext with updated yearsMNOPQRSPQMNORS $UI component for displaying progress(c) 2019-2020 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone1XheadroomProgress indication. First argument is current progress, second the maximum value.Zheadroom'Zips given list with the progress info.zipWithProgress ["a", "b"]'[(Progress 1 2,"a"),(Progress 2 2,"b")]Zheadroomlist to zip with progressheadroom zipped resultXYZXYZ% UI Components(c) 2019-2020 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone2xXYZ Data types for Headroom.Variables(c) 2019-2020 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone3^headroomMap of static and dynamic variables. Use &> function for more convenient construction of this data type.^_^_1Generic representation of supported template type(c) 2019-2020 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone 7dheadroom!Error during processing template.eheadroommissing variable valuesfheadroomerror parsing raw template textgheadroomType class representing generic license header template support.hheadroomReturns list of supported file extensions for this template type.iheadroom$Parses template from given raw text.jheadroomRenders parsed template and replaces all variables with actual values.kheadroomReturns the raw text of the template, same that has been parsed by i method.hheadroom!list of supported file extensionsiheadroomname of the template (optional)headroomraw template textheadroomparsed templatejheadroomvalues of variables to replaceheadroomparsed template to renderheadroomrendered template textkheadroom.template for which to return raw template textheadroomraw template textdfeghijkghijkdfeImplementation of Mustache template support(c) 2019-2020 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone 8oheadroomThe Mustache template.qheadroom Support for Mustache templates.opopExtraction of Haddock module header fields(c) 2019-2020 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone #$5A[ sheadroomExtracted fields from the Haddock module header.uheadroom!module copyright (content of the  Copyright field)vheadroommodule license (content of the License field)wheadroommodule license (content of the  Maintainer field)xheadroommodule license (content of the  Portability field)yheadroommodule license (content of the  Stability field)zheadroom)module short description (content of the  Description field){headroom=module long description (the text after module header fields)|headroom Extracts offsets for selected haddock fields (i.e. number of chars between start of line and field value). This is needed to properly format multi-line field values rendered in new license headers.}headroomExtracts metadata from given Haddock module header.~headroom'Adds correct indentation to multi-line Haddock field values. It's usually desired to have such values indented like this: Copyright : (c) 2020, 1st Author (c) 2020, 2nd Author 'This functions achieves that using the offset value, which specifies number of empty characters that should be placed before second (and any subsequent) line.$indentField (Just 2) "foo\nbar\nbaz""foo\n bar\n baz"headroomStrips Haskell comment syntax tokens (e.g. {-, -}) from input text.%stripCommentSyntax "{- foo -}\nbar\n" "foo \nbar\n"|headroomparsed templateheadroomextracted field offsets}headroomtext containing Haddock module headerheadroom&extracted metadata from corresponding templateheadroomextracted metadata~headroom>offset (in number of black chars) for 2nd and subsequent linesheadroominput text to indentheadroomprocessed textheadroominput text to stripheadroom,resulting text without comment syntax tokens stuvwxyz{|}~ stuvwxyz{|}~Data types for Headroom configuration(c) 2019-2020 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone #$/28:>?WMheadroomException 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-afterheadroomno configuration for  margin-beforeheadroomno configuration for  put-afterheadroomno configuration for  put-beforeheadroomno configuration for run-modeheadroomno configuration for  source-pathsheadroomno configuration for excluded-pathsheadroom$no configuration for template sourceheadroomno 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 C programming languageheadroomconfiguration for C++ programming languageheadroomconfiguration for CSSheadroomconfiguration for Haskell programming languageheadroomconfiguration for HTMLheadroomconfiguration for Java programming languageheadroomconfiguration for  JavaScript programming languageheadroomconfiguration for Rust programming languageheadroomconfiguration for Scala programming languageheadroomconfiguration for ShellheadroomAlias for partial variant of .headroomAlias for complete variant of .headroom*Configuration for specific license header.headroom%list of file extensions (without dot)headroom)number of empty lines to put after headerheadroom*number of empty lines to put before headerheadroomregexp' patterns after which to put the headerheadroomregexp( patterns before which to put the headerheadroom$syntax of the license header commentheadroomAlias for partial variant of .headroomAlias for complete variant of .headroomApplication configuration.headroom mode of the run commandheadroompaths to source code filesheadroomexcluded source pathsheadroomsource of license templatesheadroomvariable values for templatesheadroom configuration of license headersheadroom)configuration of license header functionsheadroomAlias for partial variant of .headroomAlias for complete variant of .headroomConfiguration of all known license header functions.headroomconfiguration for the !Headroom.HeaderFn.UpdateCopyright license header functionheadroomAlias for partial variant of .headroomAlias for complete variant of .headroomConfiguration for selected license header function.headroom'whether this function is enabled or notheadroomcustom configuration of the license header functionheadroomAlias for partial variant of .headroomAlias for complete variant of .headroomMain configuration for the !Headroom.HeaderFn.UpdateCopyright license header function.headroomif specified, years will be updated only in copyright statements of given authorsheadroomSource of license templatesheadroom#templates are stored as local filesheadroom+use built-in templates for selected licenseheadroom"Represents what action should the gen command perform.headroom generate YAML config file stubheadroom generate license header templateheadroom"Represents what action should the run command perform.headroomadd mode for run commandheadroom check mode for run commandheadroom drop mode for run commandheadroom replace mode for run commandheadroom&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-Internal representation of the line style of .headroom!prefix of the comment line (e.g. //)headroom.Internal representation of the block style of .headroomstarting pattern (e.g. /*)headroomending pattern (e.g. */)headroom%Syntax of the license header comment.headroom(block (multi-line) comment syntax (e.g. * *)headroom!single line comment syntax (e.g. //)headroomClosed type family. used to express the phase of given data type.headroom>Data 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&Logic for handlig supported file types(c) 2019-2020 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone#$\?headroomReturns  for given file extension (without dot), using configured values from the .headroom/Lists all recognized file extensions for given $, using configured values from the .headroomReturns the proper  for the given , selected from the .headroomlicense headers configurationheadroomfile extension (without dot)headroomfound headroomlicense headers configurationheadroom for which to list extensionsheadroom#list of appropriate file extensionsheadroomlicense headers configurationheadroom selected headroom appropriate +Operations related to files and file system(c) 2019-2020 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNonebheadroomRecursively 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):set -XQuasiQuotesexcludePaths [[re|\.hidden|], [re|zzz|]] ["foo/.hidden", "test/bar", "x/zzz/e"] ["test/bar"]headroompath to searchheadroompredicate to match filenameheadroom found filesheadroompath to searchheadroom%list of file extensions (without dot)headroomlist of found filesheadroom configuration of license headersheadroomlist of file typesheadroompath to searchheadroomlist of found filesheadroompath to searchheadroomlist of found filesheadroom file pathheadroom file contentheadroom$patterns describing paths to excludeheadroomlist of file pathsheadroomresulting list of file paths  Data types for Headroom.FileSupport(c) 2019-2020 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNoneddheadroom3Info extracted about the concrete source code file.headroomtype of the fileheadroom configuration for license headerheadroom#position of existing license headerheadroomadditional extracted variables  Embedded files(c) 2019-2020 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNonefWheadroomContent of dummy YAML( configuration file for the application.headroomDefault YAML configuration.headroom#License template for given license.headroom(license for which to return the templateheadroom(license for which to return the templateheadroom template text5Configuration handling (loading, parsing, validating)(c) 2019-2020 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone #$/j,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).headroompath to YAML configuration fileheadroomparsed configurationheadroomraw input to parseheadroom parsed application configurationheadroomsource headroomfull headroomsource headroomfull headroom4determines for which file type this configuration isheadroomsource headroomfull Data types for Headroom.Command(c) 2019-2020 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNonemmheadroomOptions for the run command.headroomused Run command modeheadroomsource code file pathsheadroomsource paths to excludeheadroomsource of license templatesheadroom 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 commandCustom readers for optparse-applicative library(c) 2019-2020 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone oheadroomReader for tuple of  and .headroom Reader for .headroom Reader for A.headroomParses  and & from the input string, formatted as licenseType:fileType.&parseLicenseAndFileType "bsd3:haskell"Just (BSD3,Haskell)Handler for the gen command.(c) 2019-2020 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone rheadroomlogging functionheadroomoptionsheadroomException specific to the gen command.headroom no mode of Gen command selectedheadroomParses ( from combination of options from given .headroom Handler for  Generator command.headroom command from which to parse the headroomparsed headroom Generator command optionsheadroomexecution result' Safe-InferredrF)Application metadata (name, vendor, etc.)(c) 2019-2020 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone theadroom5Type of the template format used for license headers.headroom%Application version, as specified in headroom.cabal file.headroomFull product description.headroom Product info.headroom Product name.headroom Homepage website of the product.Support for template variables(c) 2019-2020 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone yheadroomException specific to the Headroom.Variables module.headroominvalid variable input (as  key=value)headroomConstructor 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.compileVariables $ mkVariables [("name", "John"), ("msg", "Hello, {{ name }}")] syntax, which is delimited with starting and ending pattern.8findBlockHeader "{-" "-}" ["", "{- HEADER -}", "", ""] 0 Just (1,1)headroomFinds header in the form of single-line comment5 syntax, which is delimited with the prefix pattern.?findLineHeader "--" ["", "a", "-- first", "-- second", "foo"] 0 Just (2,3)headroom-Finds very first line that matches the given regex (numbered from zero).import Headroom.Data.Regex (re):set -XQuasiQuotesfirstMatching [[re|^foo|]] ["some text", "foo bar", "foo baz", "last"]Just 1headroom,Finds very last line that matches the given regex (numbered from zero).import Headroom.Data.Regex (re):set -XQuasiQuoteslastMatching [[re|^foo|]] ["some text", "foo bar", "foo baz", "last"]Just 2headroom$Splits input lines into three parts: list of all lines located before the very last occurence of one of the conditions from the first condition list2list of all lines between the first and last listslist of all lines located after the very first occurence of one of the conditions from the second condition listIf both first and second patterns are empty, then all lines are returned in the middle list.import Headroom.Data.Regex (re):set -XQuasiQuotes|]] [[re|<-|]] "text\n->\nRESULT\n<-\nfoo"'(["text","->"],["RESULT"],["<-","foo"])4splitInput [] [[re|<-|]] "text\n->\nRESULT\n<-\nfoo"(([],["text","->","RESULT"],["<-","foo"])splitInput [] [] "one\ntwo"([],["one","two"],[]) headroomtype of the detected fileheadroomlicense header configurationheadroommetadata extracted from templateheadroomtext used for detectionheadroomresulting file infoheadroom%info about file where header is addedheadroomtext of the new headerheadroom(text of the file where to add the headerheadroom resulting text with added headerheadroom9info about the file from which the header will be droppedheadroom.text of the file from which to drop the headerheadroom"resulting text with dropped headerheadroom2info about the file in which to replace 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+lines of text 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+lines of text in which to detect the headerheadroom/line number offset (adds to resulting position)headroomheader position &(startLine + offset, endLine + offset)headroomregex used for matchingheadroom input linesheadroommatching line numberheadroomregex used for matchingheadroom input linesheadroommatching line numberheadroompatterns for first splitheadroompatterns for second splitheadroom text to splitheadroomresult lines as -([before1stSplit], [middle], [after2ndSplit])   Support for license header functions(c) 2019-2020 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone #$/>?headroom'Environemnt data type for the composed license header function ().headroom current yearheadroomconfiguration of license header functionsheadroommode used by the R license header functionheadroom Runs the license header function using the given  environment and text of rendered license header as input.headroomComposition of various license header functions!, 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.headroomConstructor function for ! data type. This function takes ^ as argument, because it performs template compilation on selected fields of .headroomlicense header function to runheadroomenvironment valueheadroomtext of rendered license headerheadroomprocessed text of license headerheadroomconfiguration of license header functionsheadroom composed license header functionheadroom6configuration used to define post-processing behaviourheadroomrendered text of license headerheadroompost-processed text of license headerheadroom current yearheadroomtemplate variablesheadroomconfiguration of license header functionsheadroomenvironment data type   Handler for the run command.(c) 2019-2020 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone  #$>?headroomInitial RIO startup environment for the Run command.headroomlogging functionheadroomoptionsheadroom-Action to be performed based on the selected .headroom$whether the given file was processedheadroomfunction to process the fileheadroom'message to show when file was processedheadroom%message to show when file was skippedheadroomFull RIO environment for the Run command.headroomstartup RIO environmentheadroomapplication configurationheadroom current yearheadroom Handler for Run command.headroom%Loads templates from the given paths.headroom$Loads built-in templates, stored in Headroom.Embedded, for the given .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 license header functions ()headroom5Ensures that all lines in license header starts with  line-comment3 syntax if such syntax is used for license header.7sanitizeHeader (LineComment "--") "-- foo\nbar\n-- baz""-- foo\n-- bar\n-- baz"headroomRun command optionsheadroomexecution resultheadroompaths to template filesheadroommap of file types and templatesheadroom,license type for which to selected templatesheadroommap of file types and templatesheadroompath to the template fileheadroomdetected template typeheadroom%syntax of the license header commentsheadroomtemplate variablesheadroom rendered license header to post-processheadroompost-processed license headerheadroom%syntax of the license header commentsheadroominput text to sanitizeheadroomsanitized text!Handler for the init command(c) 2019-2020 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone  #$? headroom*Paths to various locations of file system.headroomRIO Environment for the init command.headroomException specific to the Headroom.Command.Init moduleheadroom-application configuration file already existsheadroom&no paths to source code files providedheadroom-no supported file types found on source pathsheadroom 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.headroom%Creates directory for template files.headroominit command optionsheadroomexecution result  "*Support for parsing command line arguments(c) 2019-2020 Vaclav Svejcar BSD-3-Clausevaclav.svejcar@gmail.com experimentalPOSIXNone headroomParses command line arguments.()*+,-./0123456789:;<=>?@ABCDEFGHIJJKLMNOP Q R S S T U U V W W X Y Z [ \ ] ^ _ ` a b c d e e f g h i j k l m n o p q r s s t u v w x y z z { | } ~      &               !!!!!!!!!!!!!!!!!!"''''''''            !!!!!headroom-0.3.0.0-inplaceHeadroom.Command.UtilsHeadroom.Data.EnumExtraHeadroom.Data.HasHeadroom.Data.LensHeadroom.Data.TextExtraHeadroom.FileType.TypesHeadroom.HeaderFn.TypesHeadroom.SerializationHeadroom.TypesHeadroom.Data.Regex!Headroom.HeaderFn.UpdateCopyrightHeadroom.UI.ProgressHeadroom.Variables.TypesHeadroom.TemplateHeadroom.Template.MustacheHeadroom.Ext.Haskell.HaddockHeadroom.Configuration.TypesHeadroom.FileTypeHeadroom.FileSystemHeadroom.FileSupport.TypesHeadroom.EmbeddedHeadroom.ConfigurationHeadroom.Command.TypesHeadroom.Command.ReadersHeadroom.Command.Gen Headroom.MetaHeadroom.VariablesHeadroom.Ext.Haskell Headroom.ExtHeadroom.FileSupportHeadroom.HeaderFnHeadroom.Command.RunHeadroom.Command.InitHeadroom.Command Control.Lens makeLenses Headroom.UI mkVariablesPaths_headroom bootstrap EnumExtra allValuesallValuesToText enumToText textToEnumHasgettermodifierhasLensviewL suffixLensessuffixLensesFormapLinesread fromLinestoLinesFileTypeCCPPCSSHaskellHTMLJavaJSRustScalaShell$fBoundedFileType$fEnumFileType$fEnumExtraFileType $fEqFileType $fOrdFileType$fShowFileTypeHeaderFn$fMonoidHeaderFn$fSemigroupHeaderFn aesonOptionsdropFieldPrefix symbolCaseprettyPrintYAML TemplateMetaHaskellTemplateMetaHaddockFieldOffsets hfoCopyright CurrentYear unCurrentYear HeadroomErrortoHeadroomErrorfromHeadroomError$fExceptionHeadroomError$fShowHeadroomError$fDefaultHaddockFieldOffsets$fEqTemplateMeta$fShowTemplateMeta$fEqHaddockFieldOffsets$fShowHaddockFieldOffsets$fEqCurrentYear$fShowCurrentYear RegexErrorCompilationFailedRegexcompilematchrereplacescan$fFromJSONRegex$fExceptionRegexError$fShowRegexError $fEqRegex $fShowRegexUpdateCopyrightModeUpdateAllAuthorsUpdateSelectedAuthorsSelectedAuthorsupdateCopyright updateYears$fEqUpdateCopyrightMode$fShowUpdateCopyrightMode$fEqSelectedAuthors$fShowSelectedAuthorsProgresszipWithProgress$fDisplayProgress $fEqProgress$fShowProgress Variables$fMonoidVariables$fSemigroupVariables $fEqVariables$fShowVariables TemplateErrorMissingVariables ParseErrorTemplatetemplateExtensions parseTemplaterenderTemplate rawTemplate$fExceptionTemplateError$fEqTemplateError$fShowTemplateErrorMustache$fTemplateMustache$fShowMustacheHaddockModuleHeader hmhCopyright hmhLicense hmhMaintainerhmhPortability hmhStability hmhShortDesc hmhLongDescextractFieldOffsetsextractModuleHeader indentFieldstripCommentSyntax$fAlternativeP$fMonadP$fApplicativeP $fFunctorP$fEqHaddockModuleHeader$fShowHaddockModuleHeaderConfigurationErrorMissingConfigurationMixedHeaderSyntaxConfigurationKeyCkFileExtensionsCkHeaderSyntax CkMarginAfterCkMarginBefore CkPutAfter CkPutBefore CkRunMode CkSourcePathsCkExcludedPathsCkTemplateSource CkVariables CkEnabledPtHeadersConfigCtHeadersConfig HeadersConfighscChscCpphscCss hscHaskellhscHtmlhscJavahscJshscRusthscScalahscShellPtHeaderConfigCtHeaderConfig HeaderConfighcFileExtensions hcMarginAfterhcMarginBefore hcPutAfter hcPutBeforehcHeaderSyntaxPtConfigurationCtConfiguration ConfigurationcRunMode cSourcePathscExcludedPathscTemplateSource cVariablescLicenseHeaderscHeaderFnConfigsPtHeaderFnConfigsCtHeaderFnConfigsHeaderFnConfigshfcsUpdateCopyrightPtHeaderFnConfigCtHeaderFnConfigHeaderFnConfig hfcEnabled hfcConfigPtUpdateCopyrightConfigCtUpdateCopyrightConfigUpdateCopyrightConfiguccSelectedAuthorsTemplateSource TemplateFilesBuiltInTemplatesGenMode GenConfigFile GenLicenseRunModeAddCheckDropReplace LicenseTypeApache2BSD3GPL2GPL3MITMPL2 HeaderSyntax BlockComment LineComment:::PhasePartialComplete$fFromJSONBlockComment'$fFromJSONLineComment'$fFromJSONRunMode$fMonoidUpdateCopyrightConfig $fSemigroupUpdateCopyrightConfig$fFromJSONUpdateCopyrightConfig$fFromJSONHeaderFnConfig$fMonoidHeaderFnConfig$fSemigroupHeaderFnConfig$fFromJSONHeaderFnConfigs$fMonoidHeaderFnConfigs$fSemigroupHeaderFnConfigs$fSemigroupHeaderConfig$fMonoidHeaderConfig$fMonoidConfiguration$fSemigroupConfiguration$fFromJSONConfiguration$fMonoidHeadersConfig$fSemigroupHeadersConfig$fFromJSONHeadersConfig$fExceptionConfigurationError$fFromJSONHeaderConfig$fEqConfigurationError$fShowConfigurationError$fEqConfigurationKey$fShowConfigurationKey$fEqTemplateSource$fShowTemplateSource $fEqGenMode $fShowGenMode $fEqRunMode $fShowRunMode$fBoundedLicenseType$fEnumLicenseType$fEnumExtraLicenseType$fEqLicenseType$fOrdLicenseType$fShowLicenseType$fEqLineComment'$fGenericLineComment'$fShowLineComment'$fEqBlockComment'$fGenericBlockComment'$fShowBlockComment'$fEqHeaderSyntax$fShowHeaderSyntax$fShowHeadersConfig$fShowHeadersConfig0$fEqHeadersConfig$fEqHeadersConfig0$fShowHeaderConfig$fShowHeaderConfig0$fEqHeaderConfig$fEqHeaderConfig0$fShowConfiguration$fShowConfiguration0$fEqConfiguration$fEqConfiguration0$fShowHeaderFnConfigs$fShowHeaderFnConfigs0$fEqHeaderFnConfigs$fEqHeaderFnConfigs0$fShowHeaderFnConfig$fShowHeaderFnConfig0$fEqHeaderFnConfig$fEqHeaderFnConfig0$fShowUpdateCopyrightConfig$fShowUpdateCopyrightConfig0$fEqUpdateCopyrightConfig$fEqUpdateCopyrightConfig0cExcludedPathsLcHeaderFnConfigsLcLicenseHeadersL cRunModeL cSourcePathsLcTemplateSourceL cVariablesLuccSelectedAuthorsL hfcConfigL hfcEnabledLhfcsUpdateCopyrightL fileTypeByExtlistExtensionsconfigByFileTypenlft-0.2.13-feb7483eUnliftIO.DirectorycreateDirectory doesFileExistgetCurrentDirectory findFilesfindFilesByExtsfindFilesByTypes listFiles fileExtensionloadFile excludePathsFileInfo fiFileTypefiHeaderConfig fiHeaderPos fiVariables $fEqFileInfo$fShowFileInfo fiFileTypeLfiHeaderConfigL fiHeaderPosL fiVariablesLconfigFileStub defaultConfiglicenseTemplateloadConfigurationparseConfigurationmakeConfigurationmakeHeadersConfigmakeHeaderConfigCommandRunOptions croRunModecroSourcePathscroExcludedPathscroTemplateSource croVariablescroDebug croDryRunCommandInitOptionscioSourcePathscioLicenseTypeCommandGenOptions cgoGenModeCommandRunGenInit$fEqCommandRunOptions$fShowCommandRunOptions$fShowCommandInitOptions$fShowCommandGenOptions $fShowCommand licenseReaderlicenseTypeReader regexReaderparseLicenseAndFileType parseGenMode commandGen$fHasLogFuncEnv$fExceptionCommandGenError$fEqCommandGenError$fShowCommandGenError TemplateType buildVersion productDesc productInfo productNamewebsitedynamicVariablesparseVariablescompileVariables$fExceptionVariablesError$fEqVariablesError$fShowVariablesErrorextractModuleNameextractVariablesextractTemplateMetaextractFileInfo addHeader dropHeader replaceHeader findHeaderfindBlockHeaderfindLineHeader firstMatching lastMatching splitInput ConfiguredEnv ceCurrentYearceHeaderFnConfigsceUpdateCopyrightMode runHeaderFnconfiguredHeaderFnpostProcessHeader$fEqConfiguredEnv$fShowConfiguredEnvceCurrentYearLceHeaderFnConfigsLceUpdateCopyrightModeLmkConfiguredEnv%$fHasUpdateCopyrightModeConfiguredEnv$fHasCurrentYearConfiguredEnv commandRunloadTemplateFilesloadBuiltInTemplatestypeOfTemplatepostProcessHeader'sanitizeHeader$fHasCurrentYearEnv$fHasCommandRunOptionsEnv $fHasCommandRunOptionsStartupEnv$fHasLogFuncStartupEnv$fHasStartupEnvEnv$fHasStartupEnvStartupEnv$fHasHeaderFnConfigsEnv$fHasConfigurationEnvPaths pConfigFile pTemplatesDirEnv envLogFuncenvInitOptionsenvPaths commandInitfindSupportedFileTypesdoesAppConfigExist $fHasPathsEnv$fHasCommandInitOptionsEnv$fExceptionCommandInitError$fEqCommandInitError$fShowCommandInitError commandParserbase Text.Read readMaybe text-1.2.3.2Data.Text.InternalTextGHC.BaseString Data.Textunlineslinestransformers-0.5.6.2Control.Monad.Trans.ReaderReaderT LineComment' lcPrefixedBy BlockComment' bcStartsWith bcEndsWith envGenOptionsCommandGenErrorNoGenModeSelectedversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileNameVariablesErrorInvalidVariable StartupEnv envRunOptions RunAction raProcessedraFuncraProcessedMsg raSkippedMsgenvEnvenvConfigurationenvCurrentYearCommandInitErrorAppConfigAlreadyExistsNoProvidedSourcePathsNoSupportedFileTypemakeTemplatesDir