#      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ None "#/7;MX_k     (c) 2017-2019 KowainikMPL-2.0Kowainik <xrom.xkov@gmail.com>None "#/7;MX_k3 summoner-Data type to keep meta information for every  .summoner&Represents PVP versioning (4 numbers). summoner-Represents some selected set of GHC versions.summoner Converts   into dot-separated string.summoner[These are old GHC versions that are not working with default GHC versions when using Stack.summonerJReturns latest known LTS resolver for all GHC versions except default one.summonerReturns base version by   as .summonerReturns corresponding base" version of the given GHC version.summoner Returns the base/ bounds for the list of the given GHC versions.cabalBaseVersions [Ghc844]"^>= 4.11.1.0"*cabalBaseVersions [Ghc802, Ghc822, Ghc844]">= 4.9.0.0 && < 4.12"summonerCreate corresponding  from the given  .summoner$Show PVP version in a standard way: 1.2.3.4   (c) 2017-2020 KowainikMPL-2.0Kowainik <xrom.xkov@gmail.com>None "#/7;MX_k%J"summonerLicenses supported by summoner./summoner+Used for downloading the license text form Github.1summoner5Replaces name/year placeholders with the actual data.2summoner9Download the given LICENSE text as it is from GitHub API.3summonerSFetches the license by given name and customises user information where applicable.4summonerShow short information for the ".5summoner3Show license name along with its short description. !"#.$%&'()*+,-/012345"#.$%&'()*+,- !1/02345(c) 2017-2019 KowainikMPL-2.0Kowainik <xrom.xkov@gmail.com>None "#/7;MX_k*@summoner,Default GHC version is the latest available.AsummonerDefault version of the Cabal.JsummonerDefault content of the ~/summoner.toml file to be generated by the  summon config command. @ABCDEFGHIJ @ABCDEFGJHI(c) 2020 KowainikMPL-2.0Kowainik <xrom.xkov@gmail.com>None "#/7;MX_k.KsummonerSwitcher for offline mode.Nsummoner"Switcher for non-interactive mode.QsummonerIs interactivity mode P?RsummonerIs connection mode M?KLMNOPQRNOPQKLMR(c) 2017-2019 KowainikMPL-2.0Kowainik <xrom.xkov@gmail.com>None "#/7;MX_k9WsummonerEndline symbol to use with neat-interpolation.Xsummoner6Creates module name from the name of the package Ex: my-lovely-project  MyLovelyProjectYsummonerGDecides whether the given text is a valid package name. Spec is here: ]https://www.haskell.org/cabal/users-guide/developing-packages.html#package-names-and-versionsZsummoner@Validate module name. It should be in the following formatTriple Part1[.PartN] [summoner$Converts every element of list into * and then joins every element into single  like .]summonerAConvert every element of a list into text, and squash the resultsWXYZ[\]WXYZ[\](c) 2017-2019 KowainikMPL-2.0Kowainik <xrom.xkov@gmail.com>None"#%/7;HMVX_`k\summonerRepresents a user's answer^summonerBuild a prompt For example, YesNoPrompt { yesNoTarget = Cabal> , yesNoPrompt = "Do you want to add a cabal integration?"} 4will generate a following prompt message to the user YDo you want to add a cabal integration? [y]/n -> y [Cabal] will be added to the project `summonertarget (e.g., #TARGET will be added to the project)asummonerprompt (e.g.,  PROMPT [y]/n)bsummoner(Build a prompt with the TARGET name only2It will generate a simple default prompt such that Add TARGET? [y]/n summonerParse an answer to summoner/Prints the given question in the following way:'printQuestion "Which option?" [A, B, C]"Which option? [A]/B/C" NoteK that the first element in the given list is considered as the default one.csummonerpAllows users to choose one of the given options. It asks the question until the appropriate answer is received.dsummonerLike c but the possible answer are  or .esummonerLike d but returns .fsummonerEThe message after yes/no questions. The output depends on the answer.   Benchmarks will be added to the project gsummonerLike f' but the text is "added to the project"jsummonerQueries for any answer. " Short project description: -> ksummonerLQueries for the answer that should satisfy the given predicate, or be empty.lsummoner Queries for an non-empty answer.msummonerLike j6 but has the default answer if no answer is specified.nsummoner[Queries many answers. If answers are not parsable shows the failing part and queries againpsummonerECheck if the folder with the suggested project name is already exist.summonerOExplicit flush ensures prompt messages are in the correct order on all systems.summonerRead ( from standard input after arrow prompt.bsummoner target namesummonerQuestion text.summonerList of available answers.csummonerParse functionsummonerQuestion text.summonerList of available options.summonerThe chosen option.dsummonerTarget and Promptsummoner action for  answersummoner action for  answer^_`abcdefghijklmnopcde^_`abjklmnopfghi(c) 2017-2019 KowainikMPL-2.0Kowainik <xrom.xkov@gmail.com>None "#/7;MX_kaqsummoner6Used for detecting the user decision during CLI input.usummoner Translate q to .vsummoner Prompt the q+ to terminal output depending on the value.wsummonerTranslate a pair of dependant qs to the pair of s.qrstuvwqrstuwv(c) 2017-2019 KowainikMPL-2.0Kowainik <xrom.xkov@gmail.com>None "#/7;MX_kcf (c) 2017-2019 KowainikMPL-2.0Kowainik <xrom.xkov@gmail.com>None "#%/7;MX_ks summoner.Describes simple structure of filesystem tree.summoner7Name of directory (relative) and its containing entriessummoner%File name (relative) and file contentsummoner]Walks through directory tree and write file contents, creating all intermediate directories.summoner@This function converts a string file path to the tree structure.For a path like this: ".githubworkflowci.yml"*This function produces the following tree: &.github/ %%% workflow/ %%% ci.yml summonerThis functions inserts given  node into the list of existing 7 nodes. The behavior of this function is the following: "It merges duplicating directories.It overrides existing  with the given  in case of duplicates.summoner(Pretty shows the directory tree content.summonerPretty shows tree with options.summonerExtract , path. Used for sorting in alphabetic order.summonerPrint directories bold.summoner Given tree.summonerPretty output. (c) 2017-2019 KowainikMPL-2.0Kowainik <xrom.xkov@gmail.com>None "#/7;MX_k}summonerType of the source resource.summonercURL link to the source file. Such files will be downloaded by URL. But they are ingored in the offline mode.summoner#File path to the local source file.summonerRaw file text content.summonerThis  is used in the filesN field of config. It decodes corresponding constructor from the top-level key.summoner5This function fetches contents of extra file sources.summoner>Fetches content of the given extra file source. Doesn't fetch  if the K is M. (c) 2017-2019 KowainikMPL-2.0Kowainik <xrom.xkov@gmail.com>None"#./17;=>?HMUVX_k summonerComplete configurations.summonerIncomplete configurations.summoner%Potentially incomplete configuration.summoner!GHC options to add to each stanzasummoner-Do not upload to the GitHub (even if enabled)summoner Custom filessummonerType family to map e to the corresponding field. This is a Higher-Kinded Data approach specialised to custom enumeration.summoner The phase of the configurations.summonerDefault  configurations.summonerIdentifies how to read  data from the .toml file.summoner=Try to retrieve user information from Git config. Return the G with the corresponding filled fields if the information is applicable.summonerFMake sure that all the required configurations options were specified.summonerBRead configuration from the given file and return it in data type.3 (c) 2017-2019 KowainikMPL-2.0Kowainik <xrom.xkov@gmail.com>None "#/7;MX_ksummonerEnum for supported build tools.summoner!Data needed for project creation.summonerrepository namesummonergithub usernamesummonerproject descriptionsummoner full namesummonere-mailsummoneryearsummonerproject categorysummonertype of licensesummoner license textsummonerGitHub repositorysummonerprivate repositorysummonerGitHub Actions CI integrationsummonerTravis CI integrationsummonerAppVeyor CI integrationsummoner is librarysummoner is executablesummoner add testssummoneradd benchmarkssummoner GHC versionssummonercustom prelude to be usedsummonerdefault extensionssummonerdefault GHC optionssummoner.gitignore filesummonerdo not upload to GitHubsummonerTree nodes of extra filessummonerShow  in lowercase.summonerParse  from string. Inverse of ."" (c) 2017-2019 KowainikMPL-2.0Kowainik <xrom.xkov@gmail.com>None "#/7;MX_k(c) 2017-2019 KowainikMPL-2.0Kowainik <xrom.xkov@gmail.com>None "#/7;MX_ksummoner" content for a single script file.(c) 2017-2019 KowainikMPL-2.0Kowainik <xrom.xkov@gmail.com>None "#/7;MX_ku(c) 2017-2019 KowainikMPL-2.0Kowainik <xrom.xkov@gmail.com>None "#%/7;MX_k (c) 2017-2019 KowainikMPL-2.0Kowainik <xrom.xkov@gmail.com>None "#/7;MX_k(c) 2017-2019 KowainikMPL-2.0Kowainik <xrom.xkov@gmail.com>None "#/7;MX_ksummoner'Creates a `.cabal` file from the given .(c) 2017-2019 KowainikMPL-2.0Kowainik <xrom.xkov@gmail.com>None "#/7;MX_k;summoner'Creating tree structure of the project.(c) 2017-2019 KowainikMPL-2.0Kowainik <xrom.xkov@gmail.com>None "#/7;MX_ksummonerGenerate the project.summonerGenerate the project.summoner.Creates the directory and run GitHub commands.summonerFrom the given  creates the project. summoner+Init, commit and push repository to GitHub.summoner*Is it interactive or non-interactive mode?summoneroffline mode option.summonerGiven project name.summonerGiven configurations.summoneroffline mode option.summonerGiven project name.summonerGiven configurations.summoneroffline mode option.summonerGiven project name.summonerGiven configurations.(c) 2017-2019 KowainikMPL-2.0Kowainik <xrom.xkov@gmail.com>None"#/07;MPX_kV#!summonerOptions parsed with the config commandsummonerCommands parsed with show command"summonerOptions parsed with the script command#summoner Build tool: cabal or stack$summonerFile path to the script%summonerGHC version for this scriptsummonerOptions parsed with the new commandsummoner Project namesummonerIgnore all config files if &summonerL/M modesummoner*Interactive or non-interactive mode is on?summonerFile with custom configurationsummoner Config gathered via command-linesummoner Represent all available commandssummonernew command creates a new projectsummonerscript command creates Haskell scriptsummonershow1 command shows supported licenses or GHC versionssummonerconfig, command creates the TOML configuration filesummonerMain function that parses CLI% commands and runs them using given  handler.summonerRuns summoner in CLI mode.'summonerRun summoner with CLI commandsummonerRuns config command BUsage: summon config [-f|--file=FILENAME] Create a default TOML configuration file for summoner Available options: -h,--help Show this help text -f,--file=FILENAME Path to the toml file with configurations. If not specified '~/.summoner.toml' will be used by default (summonerRuns show command. Usage: summon show COMMAND Show supported licenses or ghc versions Available commands: ghc Show available ghc versions license Show available licenses license [LICENSE_NAME] Show specific license text summoner$Get the customized License text for summon show license NAME command.summonerRuns script command. *Usage: summon script BUILD_TOOL (-g|--ghc GHC_VERSION) (-n|--name FILE_NAME) Create a new Haskell script Available options: -h,--help Show this help text -g,--ghc GHC_VERSION Version of the compiler to be used for script -n,--name FILE_NAME Name of the script file )summonerRuns new command. 6Usage: summon new PROJECT_NAME [--ignore-config] [--no-upload] [--offline] [-f|--file FILENAME] [--cabal] [--stack] [--prelude-package PACKAGE_NAME] [--prelude-module MODULE_NAME] [with [OPTIONS]] [without [OPTIONS]] summoner By the given ! return the final configurations.*summonercReads and parses the given config file. If no file is provided the default configuration returned.+summonerMain parser of the app.,summonerAll possible commands.-summonerParses options of the config command..summonerParses options of the show command./summonerParses options of the script command.0summonerArgument parser for .1summonerParses options of the new command.(c) 2017-2019 KowainikMPL-2.0Kowainik <xrom.xkov@gmail.com>None "#/7;MX_k  !"#.$%&'()*+,-/012345@ABCDEFGHIJKLMNOPQRWXYZ[\]^_`abcdefghijklmnopqrstuvw2 !"#$%&'()*+,-./01234556789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrsstuvwxyz{|}~                       !" #$%&'()*+,-. /012 3 456789:;*+<=>?@ABCDEFGHsummoner-2.0.1.0-inplaceSummoner.GhcVerSummoner.LicenseSummoner.Default Summoner.Mode Summoner.TextSummoner.QuestionSummoner.DecisionSummoner.CustomPrelude Summoner.TreeSummoner.SourceSummoner.ConfigSummoner.SettingsSummoner.Template.StackSummoner.Template.ScriptSummoner.Template.HaskellSummoner.Template.GitHubSummoner.Template.DocSummoner.Template.CabalSummoner.TemplateSummoner.Project Summoner.CLIPaths_summonerSummonerGhcMetagmGhcgmBase gmResolverPvppvpFirst pvpSecondpvpThird pvpFourthGhcVerGhc7103Ghc802Ghc822Ghc844Ghc865Ghc883 showGhcVeroldGhcs parseGhcVer latestLtsbaseVercabalBaseVersionsghcTable $fShowPvp $fEqGhcVer $fOrdGhcVer $fShowGhcVer $fEnumGhcVer$fBoundedGhcVerLicense unLicense LicenseNameMITBSD2BSD3GPL2GPL3LGPL21LGPL3AGPL3Apache20MPL20ISCNONEgithubLicenseQueryNamesparseLicenseNamecustomizeLicense fetchLicensefetchLicenseCustomlicenseShortDescshowLicenseWithDesc$fShowLicenseName$fFromJSONLicense$fEqLicenseName$fOrdLicenseName$fEnumLicenseName$fBoundedLicenseName$fGenericLicenseName $fShowLicense$fGenericLicense$fIsStringLicense defaultGHC defaultCabaldefaultLicenseName defaultOwnerdefaultFullName defaultEmaildefaultTomlFiledefaultConfigFiledefaultDescription currentYeardefaultConfigFileContent ConnectModeOnlineOffline Interactivity InteractiveNonInteractiveisNonInteractive isOffline$fShowInteractivity$fEqInteractivity$fShowConnectMode$fEqConnectModeendLinepackageToModulepackageNameValidmoduleNameValidintercalateMap headToUpper tconcatMap YesNoPrompt yesNoTarget yesNoPromptmkDefaultYesNoPromptchoose chooseYesNochooseYesNoBooltargetMessageWithText targetMessage trueMessage falseMessagequeryqueryWithPredicate queryNotNullqueryDefqueryManyRepeatOnFailcheckUniqueNamedoesExistProjectNameDecisionIdkNopYesdecisionToBoolpromptDecisionToBooldecisionsToBools$fMonoidDecision$fSemigroupDecision$fShowDecision $fEqDecision$fEnumDecision$fBoundedDecision$fGenericDecision CustomPrelude cpPackagecpModulecustomPreludeT$fShowCustomPrelude$fEqCustomPreludeTreeFsDirFile traverseTree pathToTree insertTree showBoldTreeshowTree$fGenericTreeFs $fShowTreeFs $fEqTreeFs $fOrdTreeFsSourceUrlLocalRaw sourceCodec fetchSources fetchSource $fShowSource $fEqSourceConfig PartialConfigConfigPcOwner cFullNamecEmailcLicensecGhcVercCabalcStackcGitHub cGhActionscTraviscAppVeycPrivatecLibcExecTestcBenchcPrelude cExtensions cGhcOptions cGitignore cNoUploadcFiles defaultConfig configCodecguessConfigFromGitfinaliseloadFileConfig$fMonoidConfigP$fSemigroupConfigP$fGenericConfigP $fShowConfigP $fEqConfigPToolCabalStackSettings settingsRepo settingsOwnersettingsDescriptionsettingsFullName settingsEmail settingsYearsettingsCategoriessettingsLicenseNamesettingsLicenseTextsettingsGitHubsettingsPrivatesettingsGhActionssettingsTravissettingsAppVeyor settingsIsLib settingsIsExe settingsTest settingsBenchsettingsTestedVersionssettingsPreludesettingsExtensionssettingsGhcOptionssettingsGitignore settingsCabal settingsStacksettingsNoUpload settingsFilesshowTool parseTool$fShowSettings $fShowTool$fEqTool $fEnumTool $fBoundedTool stackFiles scriptFile haskellFiles gitHubFilesdocFiles cabalFilecreateProjectTemplategenerateProjectgenerateProjectInteractivegenerateProjectNonInteractiveinitializeProjectShowOptsGhcList LicenseListNewOptsnewOptsProjectNamenewOptsIgnoreFilenewOptsConnectModenewOptsInteractivitynewOptsConfigFilenewOptsCliConfigCommandNewScriptShowInfosummon summonCli runConfiggetCustomLicenseText runScriptgetFinalConfigversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName baseVerPvp toGhcMeta text-1.2.4.0Data.Text.InternalText Data.Text intercalateAnsweryesOrNo printQuestionYNghc-prim GHC.TypesBool putStrFlushprompttreeFpPtomland-1.3.0.0-4b745447504dfe335b8775366120c97c0b4bec6b7cd4af3c9265d1c196fb3551Toml.Codec.Types TomlCodec:-PhasecreateProjectDirectorydoGithubCommands ConfigOpts ScriptOptsscriptOptsToolscriptOptsName scriptOptsGhcTrue runCliCommandrunShowrunNewreadFileConfig cliParser summonerPconfigPshowPscriptPtoolArgPnewP