V3      !"#$%&'()*+,-./012NoneOInclude this function when your setup doesn't contain any extra functionality.Modifies the given record of hooks by adding functionality that creates a package info module for each component of the cabal package.4This function is intended for usage in more complex Setup.hsU scripts. If your setup doesn't contain any other function you can just import the  function from this module.The modules are created in the autogen! build directory where also the Path_Q module is created by cabal's simple build setup. This is usually the directory ./dist/build/autogen.1For a library component the module is named just PkgInfo0. For all other components the module is named PkgInfo_COMPONENT_NAME where COMPONENT_NAME# is the name of the component with - characters replaced by _.3456789:;<=>?3456789:;<=>? Safe-Inferred9HM@KThis is the same type as the type from the lens library with the same name.ZIn case it is already import from the lens package this should be hidden from the import.KThis is the same type as the type from the lens library with the same name.ZIn case it is already import from the lens package this should be hidden from the import.KThis is the same type as the type from the lens library with the same name.ZIn case it is already import from the lens package this should be hidden from the import.@ABCD@ABCD@ABCDNone 2349HM 3Information about the cabal package. The format is: C(info message, detailed info message, version string, license text)See the documentation of Configuration.Utils.Setupr for a way how to generate this information automatically from the package description during the build process.EProgram DescriptionF Help headerG Help footerHKoptions parser for configuration (TODO consider using a typeclass for this)Idefault configuration:Type of option parsers that yield a modification function.$This operator is an alternative for J with a higher precedence which makes it suitable for usage within Applicative style funtors without the need to add parenthesis.$This operator is a UTF-8 version of  which is an alternative for J with a higher precedence which makes it suitable for usage within Applicative style funtors without the need to add parenthesis.1The hex value of the UTF-8 character is 0x00d7. In VIM type:  Ctrl-V u 00d7nYou may also define a key binding by adding something like the following line to your vim configuration file: iabbrev <buffer> >< 0Functional composition for applicative functors. LFunctional composition for applicative functors with its arguments flipped. XApplicative functional composition between a pure function and an applicative function. sApplicative functional composition between a pure function and an applicative function with its arguments flipped. 0Functional composition for applicative functors.This is a rather popular operator. Due to conflicts (for instance with the lens package) it may have to be imported qualified.iFor people who like nicely aligned code and do not mind messing with editor key-maps: here a version of   that uses a unicode symbol1The hex value of the UTF-8 character " is 0x2299.A convenient VIM key-map is: iabbrev <buffer> ../ "JAn operator for applying a setter to an option parser that yields a value.Example usage: "data Auth = Auth { _user "7 !String , _pwd "7 !String } user "7 Functor  ! (String !  String) ! Auth !  Auth user f s = (\u ! s { _user = u }) <$> f (_user s) pwd "7 Functor  ! (String !  String) ! Auth !  Auth pwd f s = (\p ! s { _pwd = p }) <$> f (_pwd s) -- or with lenses and TemplateHaskell just: -- $(makeLenses ''Auth) pAuth "7 MParser Auth pAuth = id <$< user .:: strOption long "user" " short 'u' " help "user name" <*< pwd .:: strOption long "pwd" " help "password for user"[An operator for applying a setter to an option parser that yields a modification function.Example usage: data HttpURL = HttpURL { _auth "7 !Auth , _domain "7 !String } auth "7 Functor  ! (Auth !  Auth) ! HttpURL !  HttpURL auth f s = (\u ! s { _auth = u }) <$> f (_auth s) domain "7 Functor  ! (String !  String) ! HttpURL !  HttpURL domain f s = (\u ! s { _domain = u }) <$> f (_domain s) path "7 Functor  ! (String !  String) ! HttpURL !  HttpURL path f s = (\u ! s { _path = u }) <$> f (_path s) -- or with lenses and TemplateHaskell just: -- $(makeLenses ''HttpURL) pHttpURL "7 MParser HttpURL pHttpURL = id <$< auth %:: pAuth <*< domain .:: strOption long "domain" " short 'd' " help "HTTP domain"A JSON K# parser for a property of a given L- that updates a setter with the parsed value. data Auth = Auth { _userId "7 !Int , _pwd "7 !String } userId "7 Functor  ! (Int !  Int) ! Auth !  Auth userId f s = (\u ! s { _userId = u }) <$> f (_userId s) pwd "7 Functor  ! (String !  String) ! Auth !  Auth pwd f s = (\p ! s { _pwd = p }) <$> f (_pwd s) -- or with lenses and TemplateHaskell just: -- $(makeLenses ''Auth) instance FromJSON (Auth ! Auth) where parseJSON = withObject "Auth" $ \o ! id <$< setProperty user "user" p o <*< setProperty pwd "pwd" parseJSON o where p = withText "user" $ \case "alice" ! pure (0 "7 Int) "bob" ! pure 1 e ! fail $ "unrecognized user " " eA variant of the  that uses the default M method from the Na instance to parse the value of the property. Its usage pattern mimics the usage pattern of the O! operator from the aeson library. data Auth = Auth { _user "7 !String , _pwd "7 !String } user "7 Functor  ! (String !  String) ! Auth !  Auth user f s = (\u ! s { _user = u }) <$> f (_user s) pwd "7 Functor  ! (String !  String) ! Auth !  Auth pwd f s = (\p ! s { _pwd = p }) <$> f (_pwd s) -- or with lenses and TemplateHaskell just: -- $(makeLenses ''Auth) instance FromJSON (Auth ! Auth) where parseJSON = withObject "Auth" $ \o ! id <$< user ..: "user" o <*< pwd ..: "pwd" o A variant of the aeson operator OF that creates a parser that modifies a setter with a parsed function. data HttpURL = HttpURL { _auth "7 !Auth , _domain "7 !String } auth "7 Functor  ! (Auth !  Auth) ! HttpURL !  HttpURL auth f s = (\u ! s { _auth = u }) <$> f (_auth s) domain "7 Functor  ! (String !  String) ! HttpURL !  HttpURL domain f s = (\u ! s { _domain = u }) <$> f (_domain s) path "7 Functor  ! (String !  String) ! HttpURL !  HttpURL path f s = (\u ! s { _path = u }) <$> f (_path s) -- or with lenses and TemplateHaskell just: -- $(makeLenses ''HttpURL) instance FromJSON (HttpURL ! HttpURL) where parseJSON = withObject "HttpURL" $ \o ! id <$< auth %.: "auth" o <*< domain ..: "domain" oProgram Description Help header Help footerKoptions parser for configuration (TODO consider using a typeclass for this)default configuration& for simultaneous query and update of  and &. This supports to change the type of  with B and C.Smart constructor for . and  are set to P.Q_A flag that indicates that the application should output the effective configuration and exit.R:The configuration value that is given to the application. Run an IO action with a configuration that is obtained by updating the given default configuration the values defined via command line arguments.eIn addition to the options defined by the given options parser the following options are recognized: --config-file, -cKParse the given file path as a (partial) configuration in YAML format.--print-config, -p>Print the final parsed configuration to standard out and exit. --help, -hPrint a help message and exit.!Run an IO action with a configuration that is obtained by updating the given default configuration the values defined via command line arguments.eIn addition to the options defined by the given options parser the following options are recognized: --config-file, -cKParse the given file path as a (partial) configuration in YAML format.--print-config, -p>Print the final parsed configuration to standard out and exit. --help, -hPrint a help message and exit. --version, -v.Print the version of the application and exit. --info, -i8Print a short info message for the application and exit. --long-inf;Print a detailed info message for the application and exit. --license;Print the text of the lincense of the application and exit."Commandline parser for record S valuesExample: pdata Setting = Setting { _setA :: !Int , _setB :: !String } deriving (Show, Read, Eq, Ord, Typeable) $(makeLenses ''Setting) defaultSetting :: Setting defaultSetting = Setting { _setA = 0 , _setB = 1 } instance ToJSON Setting where toJSON setting = object [ "a" .= _setA setting , "b" .= _setB setting ] instance FromJSON (Setting -> Setting) where parseJSON = withObject "Setting" $ \o -> id <$< setA ..: "a" % o <*< setB ..: "b" % o instance FromJSON Setting where parseJSON v = parseJSON v <*> pure defaultSetting pSetting :: MParser Setting pSetting = id <$< setA .:: option auto % short 'a' <> metavar "INT" <> help "set a" <*< setB .:: option auto % short 'b' <> metavar "INT" <> help "set b" -- | Use 'Setting' as 'Maybe' in a configuration: -- data Config = Config { _maybeSetting :: !(Maybe Setting) } deriving (Show, Read, Eq, Ord, Typeable) $(makeLenses ''Config) defaultConfig :: Config defaultConfig = Config { _maybeSetting = defaultSetting } instance ToJSON Config where toJSON config = object [ "setting" .= maybeSetting ] instance FromJSON (Config -> Config) where parseJSON = withObject "Config" $ \o -> id <$< maybeSetting %.: "setting" % o pConfig :: MParser Config pConfig = id <$< maybeSetting %:: (maybeOption defaultSetting <$> pEnableSetting <*> pSetting) where pEnableSetting = boolOption % long "setting-enable" <> value False <> help "Enable configuration flags for setting"/TUVWXEFGHI 4a lens into the target that is updated by the parserthe JSON property name the JSON K7 parser that is used to parse the value of the propertythe parsed JSON K LQRYZ [!"4default value that is used if base configuration is PIwhether to enable this parser or not (usually is a boolean option parser):update function (usually given as applicative 'MParser a')Tthe base value that is updated (usually the result of parsing the configuraton file)\]^_`abcdefghijklmnoOpqrstuvwxyz{|}~MNLK       !"! ! "&TUVWXEFGHI QRYZ [!"\      None 249M$>We restrict services to use either HTTP or HTTPS but not both.bTLS can be turned off explicitely in the configuration file by setting the respective section to null. It can not be turned on or off via command line options. But once it is turned on the values for the certificate and key file can be changed by command line options.%MIn order to make TLS optional this type should be used wrapped into a Maybe.This option parser does not allow to enable or disable usage of TLS. The option will have effect only when TLS usage is configured in the configuration file or the default configuration.eFIXME: print a warning and exit when one of these options is provided even though TLS is turned off.3This is used as default when wrapped into Maybe and the parsed value is not  andthe given default is not P.&#$ !"#%$%&&''()(*+,-./012)*+,-.#$%&'()*+,-./012%&'$()*+,#-./012#$ !"#%$%&&''()(*+,-./012)*+,-./      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTRSURVWRVXRYZO[\]^O[_``ab cdefOghOgiOgjOgkOlmOgnRopRoqRorRosRotRouRovRowRxyRxzR{|RY}RY~RYRYRYRYRYRYRYRYRVRVRVRVRVRVRVRVRSRSRSRSRSRSURSRSRSRSRSRSRSRSOgOgOgOgOgOgOgOgOgOgOgOgOgOgOgOgOgOgOgOgOgOgOOlOP      !!"##$%&'(()*+),-./*01234f56789configuration-tools-0.2.6Configuration.Utils.SetupConfiguration.UtilsConfiguration.Utils.HttpConfiguration.Utils.InternalmainmkPkgInfoModulesLens'LensPkgInfo ProgramInfoMParser%×<*<>*><$<>$><.>⊙.::%:: dropAndUncaml setProperty..:%.: boolReader boolOption fileOption eitherReadP piDescription piHelpHeader piHelpFooterpiOptionParserpiDefaultConfiguration%piOptionParserAndDefaultConfiguration programInforunWithConfigurationrunWithPkgInfoConfiguration maybeOptionHttpClientConfigurationHttpServiceConfigurationHttpServiceTLSConfiguration hstcCertFile hstcKeyFilehscHosthscPort hscUseTLSdefaultHttpServiceConfigurationpHttpServiceConfigurationhccHosthccPort hccUseTLSdefaultHttpClientConfigurationpHttpClientConfigurationhttpService2clientConfigurationmkPkgInfoModulesPostConfpkgInfoModuleNamepkgInfoFileNametrimgetVCS flagNameStr pkgInfoModuleupdatePkgInfoModulelicenseFilesTexthgInfogitInfo noVcsInfopkgIdWithLicenseIso'lensoversetiso_piDescription _piHelpHeader _piHelpFooter_piOptionParser_piDefaultConfigurationbaseGHC.Base$ aeson-0.8.0.2Data.Aeson.Types.InternalValueObjectData.Aeson.Types.Class parseJSONFromJSONData.Aeson.Types.Instances.: Data.MaybeNothing printConfig mainConfigMaybeAppConfiguration _printConfig _mainConfigpAppConfiguration mainOptionspPkgInfo$fFromJSON(->)Control.Applicative<*>pure Alternative Applicative Data.Monoidmappendempty Data.AesoneitherDecodeStrict' eitherDecode'eitherDecodeStrict eitherDecode decodeStrict'decode' decodeStrictdecodeData.Aeson.Parser.Internaljson'jsonData.Aeson.Encode.ByteStringencode.!=.:?fromJSON.=withBoolwithScientific withNumber withArraywithText withObjectgenericParseJSON genericToJSONgToJSONGToJSON gParseJSON GFromJSONtoJSONToJSONobjectErrorSuccessResultArrayStringNumberBoolNullfromDotNetTime DotNetTime<**>optionalliftA3liftA2liftA<**>manysome<|>getConstConst unwrapMonad WrapMonad WrappedMonad unwrapArrow WrapArrow WrappedArrow getZipListZipList Data.Functor<$><><$optparse-applicative-0.11.0.1Options.Applicative.Extra renderFailure parserFailureexecParserPurecustomExecParserMaybeexecParserMaybegetParseResulthandleParseResultcustomExecParser execParser hsubparserhelperOptions.Applicative.Builderidmprefscolumns noBacktrackshowHelpOnError disambiguate multiSuffixinfo noIntersperse failureCode progDescDocprogDesc footerDocfooter headerDocheader briefDescfullDescoption nullOption strOption infoOption abortOptionswitchflag'flag strArgumentargument subparser completeraction completeWithcommandhiddenmetavar noArgError eitherReaderhelpDochelp showDefaultshowDefaultWithvaluelongshortdisabledstrautoInfoModPrefsMod$Options.Applicative.Builder.Internalinternal OptionFields FlagFields CommandFieldsArgumentFieldsModOptions.Applicative.Common treeMapParser mapParser evalParserrunParserFully runParserInfo runParserliftOpt optionNames showOption%Options.Applicative.Builder.Completer bashCompleter listCompleterlistIOCompleterOptions.Applicative.Types overFailure mkCompleter readerError readerAbortErrorMsgInfoMsg ShowHelpText UnknownError ParseErrorinfoIntersperseinfoFailureCode infoFooter infoHeader infoProgDesc infoFullDesc infoParser ParserInfo prefColumns prefBacktrackprefShowHelpOnErrorprefDisambiguateprefMultiSuffix ParserPrefsReadM CompleterexecCompletionCompletionResult execFailure ParserFailureFailureCompletionInvoked ParserResultpHttpServiceTLSConfiguration%$fFromJSONHttpServiceTLSConfiguration_hccHost_hccPort _hccUseTLS_hscHost_hscPort _hscInterface _hscUseTLS _hstcCertFile _hstcKeyFile"defaultHttpServiceTLSConfiguration hscInterface$fToJSONHttpClientConfiguration $fToJSONHttpServiceConfiguration$fFromJSON(->)0#$fToJSONHttpServiceTLSConfiguration$fFromJSON(->)1