!]J>Y      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab c d e f g h i j k l m n o p q r s t u v wxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXNone4567Y haskell-ciZBlock of lines, Boolean parameter tells whether block should be surrounded by empty linesZ haskell-ciPrettyprint a list of fields.[ haskell-ciZ! with user specified indentation.\ haskell-ciUsed in ].^ haskell-ciUsed in ].] haskell-ciSimple variant of genericFromParsecField_ haskell-citransform field contents haskell-citransform section arguments `abZ[_\^]None4567=?@A[None4567=?@A  None4567%/ haskell-ci Normalised9parseI = maybe (error "foo") id . traverse C.simpleParsec&normaliseInstalled $ parseI ["-Cabal"].InstalledDiff (fromList [PackageName "Cabal"])$normaliseInstalled $ parseI ["-all"]InstalledOnly (fromList [])5normaliseInstalled $ parseI ["-all", "+transformers"]5InstalledOnly (fromList [PackageName "transformers"]) ')(*.-,+/ *.-,+')(/None4567#5 haskell-ciJobsN:M - N ghcs (cabal -j), M threads (ghc -j)6let parseJobs = C.simpleParsec :: String -> Maybe JobsparseJobs "2:2"Just (BothJobs 2 2)parseJobs ":2"Just (GhcJobs 2) parseJobs "2"Just (CabalJobs 2)parseJobs "garbage"Nothing58769:58769:Safe4567'> haskell-ci(Return the part after the first argumentafterInfix "BAR" "FOOBAR XYZZY" Just " XYZZY"? haskell-ciafterPrefix "FOO" "FOOBAR" Just "BAR"@ haskell-ci4findMaybe readMaybe ["foo", "1", "bar"] :: Maybe IntJust 1>?@>?@None4567(D haskell-ciAlphas, RCs and HEAD.ABCDEABCDENone4567*J haskell-ciA piece of a globbing patternN haskell-ci6A single directory or file component of a globbed pathFIGHJKMLNORQPSTUVWXYSTORQPNJKMLFIGHUVWXY None4567+bedcbedc None4567,jkonmljkonml None4567-r haskell-ci;Render parse error highlighting the part of the input file.rr None4567/Bs haskell-ci!File fields to final value parser haskell-ci File to readss None4567/tuvtuvNone 4567=?@AX6, haskell-ciMore general version of . haskell-ciEThis is a bit tricky since it has to cover globs which have embedded , chars. But we don't just want to parse strictly as a glob since we want to allow http urls which don't parse as globs, and possibly some system-dependent file paths. So we parse fairly liberally as a token, but we allow , inside matched {} braces.wxyz{|}~}~z{|wxyNone4567e9 haskell-ci-Parse project file. Extracts only few fields.Ofmap prjPackages $ parseProjectFile "cabal.project" "packages: foo bar/*.cabal"Right ["foo","bar/*.cabal"] None4567:tNone4567:None&'4567;None4567e=& haskell-cirun with latest GHC haskell-cirun with specified GHC version None4567=None4567e>ZNone4567e>None 4567=?@Ae?)     )     None4567A\"! #'&%$()*+#'&%$"! ()*+None4567D[; haskell-ciDEncode shell command to be YAML safe and (optionally) ShellCheck it.= haskell-ciLike ;$ but with explicit SC exclude codes.!.0/134256879:;<=>?@ABCDEFGHIJKLMN!;<=>?@A:6879BC5DEFGH1342IJKLM.0/NNone $%4567`eIc haskell-ci Modules arguments to the libraryWe check the library component%If there are hs-source-dirs, use them%otherwise use exposed + other modulesAlso add default-extensionsNote:2 same argument work for hlint too, but not exactly !"(+./06978:BCWXW./06978+CBX: !"(d !"#$%&'()**+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcbdefghijklmnnopqrstuvwxyz{ | } ~          !"#$%&'()**+,-./0123456789:;<==>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkklmn9haskell-ci-0.2-2lv3hJfEnM75cTVtF5yiJS-haskell-ci-internalHaskellCI.OptionsGrammarHaskellCI.Config.CopyFieldsHaskellCI.Config.FoldsHaskellCI.Config.InstalledHaskellCI.Config.JobsHaskellCI.Extras HaskellCI.GHCHaskellCI.GlobHaskellCI.OptimizationHaskellCI.PackageHaskellCI.ParsecErrorHaskellCI.ParsecUtilsHaskellCI.VersionHaskellCI.NewtypesHaskellCI.ProjectHaskellCI.TestedWithHaskellCI.OptparseGrammarHaskellCI.Config.HLintHaskellCI.Config.DumpHaskellCI.Config.DoctestHaskellCI.Config.ConstraintSetHaskellCI.Config HaskellCI.CliHaskellCI.MakeTravisOutput HaskellCIDistribution.Fields.Pretty Cabal-2.4.0.1Distribution.FieldGrammar^^^ CopyFieldsCopyFieldsNoneCopyFieldsSome CopyFieldsAllshowCopyFields$fParsecCopyFields$fPrettyCopyFields$fEqCopyFields$fOrdCopyFields$fShowCopyFields$fEnumCopyFields$fBoundedCopyFieldsFoldsgetFoldsFold FoldSDist FoldUnpack FoldBuildFoldBuildInstalledFoldBuildEverythingFoldTest FoldHaddock FoldStackage FoldCheck FoldDoctest FoldHLintFoldConstraintSetsshowFold possibleFolds $fPrettyFolds $fParsecFolds$fNewtypeFoldsSet$fEqFold $fOrdFold $fShowFold $fEnumFold $fBoundedFoldInstalledNormalised InstalledDiff InstalledOnly Installed InstalledAll InstalledNoneAddRemovenormaliseInstalled$fParsecInstalled$fPrettyInstalled $fEqInstalled$fShowInstalled$fShowInstalledNormalisedJobs CabalJobsGhcJobsBothJobs cabalJobsghcJobs $fPrettyJobs $fParsecJobs $fShowJobs afterInfix afterPrefix findMaybeknownGhcVersionsghcAlphadispGhcVersion previewGHC ghcMajVer FilePathRootFilePathRelativeFilePathHomeDir GlobPieceWildCardLiteralUnionGlobFilePathGlobRelGlobDirGlobFileGlobDirTrailing FilePathGlobparseFilePathGlobRel parseGlobisGlobEscapedChar expandRelGlob matchGlob $fEqGlobPiece$fShowGlobPiece$fEqFilePathGlobRel$fShowFilePathGlobRel$fEqFilePathRoot$fShowFilePathRoot$fEqFilePathGlob$fShowFilePathGlob OptimizationOptimizationOnOptimizationOffOptimizationLevel$fPrettyOptimization$fParsecOptimization$fEqOptimization$fShowOptimizationPackagePkgpkgNamepkgJobspkgDirpkgGpd $fEqPackage $fShowPackagerenderParseErrorreadAndParseFileghcVersionPredicateghcVersionToStringequivVersionRangesSep prettySepparseSepAlaSet getAlaSetRangeInt' HeadVersiongetHeadVersionNoCommasPackageLocationalaSetalaSet'$fPrettyPackageLocation$fParsecPackageLocation$fNewtypePackageLocation[]$fPrettyNoCommas$fParsecNoCommas$fNewtypeNoCommas[]$fPrettyHeadVersion$fParsecHeadVersion$fNewtypeHeadVersionMaybe $fPrettyInt' $fParsecInt'$fNewtypeInt'Int $fPrettyRange $fParsecRange$fNewtypeRangeVersionRange$fNewtypeAlaSetSet$fSepNoCommaFSep$fSepCommaFSep$fSepCommaVCat$fPrettyAlaSet$fParsecAlaSetProject prjPackagesprjConstraints prjAllowNewerprjReorderGoalsprjMaxBackjumpsprjOptimizationprjSourceRepos prjOrigFields emptyProjectparseProjectFile $fShowProject$fFunctorProject$fFoldableProject$fTraversableProject$fGenericProjectTestedWithJobsTestedWithUniform TestedWithAny checkVersions$fPrettyTestedWithJobs$fParsecTestedWithJobs$fEqTestedWithJobs$fShowTestedWithJobsOptionsGrammarmetahelphelp rangeField"$fOptionsGrammarParsecFieldGrammarOptparseGrammarrunOptparseGrammar$fOptionsGrammarOptparseGrammar$fFieldGrammarOptparseGrammar$fApplicativeOptparseGrammar$fFunctorOptparseGrammarHLintJobHLintJobLatest HLintConfigcfgHLintEnabled cfgHLintJob cfgHLintYamlcfgHLintOptionscfgHLintVersiondefaultHLintVersionhlintConfigGrammar$fPrettyHLintJob$fParsecHLintJob $fEqHLintJob$fShowHLintJob$fShowHLintConfig$fGenericHLintConfig DumpGrammarDGrunDG$fOptionsGrammarDumpGrammar$fFieldGrammarDumpGrammar$fApplicativeDumpGrammar$fFunctorDumpGrammar DoctestConfigcfgDoctestEnabledcfgDoctestOptionscfgDoctestVersiondefaultDoctestVersiondoctestConfigGrammar$fShowDoctestConfig$fGenericDoctestConfig ConstraintSetcsName csGhcVersions csConstraints csRunTestsemptyConstraintSetconstraintSetGrammar$fShowConstraintSet$fGenericConstraintSetEnvConfigcfgCabalInstallVersioncfgJobs cfgTestedWith cfgCopyFieldscfgLocalGhcOptionscfgCachecfgNoisecfgInstallDeps cfgInstalledcfgTests cfgBenchmarks cfgHaddockcfgNoTestsNoBenchcfgUnconstraintedcfgCheckcfgOnlyBranchescfgIrcChannelscfgProjectNamecfgFolds cfgGhcHead cfgPostgrescfgEnvcfgAllowFailurescfgLastInSeriescfgOsxcfgApt cfgDoctestcfgHLintcfgConstraintSets cfgRawProjectdefaultCabalInstallVersion emptyConfig configGrammarreadConfigFileparseConfigFile parseName parseNameBS $fPrettyEnv $fParsecEnv$fNewtypeEnvMap $fShowConfig$fGenericConfigOptionsoptCollections optOutput optConfigoptConfigMorphismCommand CommandTravisCommandRegenerateCommandListGHCCommandDumpConfigdefaultOptionsoptionsP cliParserInfo parseTravis$fSemigroupOptions $fShowCommandResultSuccessFailureRowRowErrRowSkip YamlWriter DiagnosticInfoWarnErrorMakeTravisOutputshshForJobsh'shImplcommentblankrawRowformatDiagnosticsformatDiagnostic putStrLnErr putStrLnErrs putStrLnWarn putStrLnInfo tellStrLn tellStrLns tellStrLnsRaw sequenceRowsfoldedTellStrLnsfoldedTellStrLns'success $fIsStringRow$fSemigroupResult$fMonoidResult$fEqDiagnostic$fShowDiagnostic $fEqResult $fShowResult$fFunctorResultmaintravisFromConfigFileBlock showFields showFields'prettyFieldLinesfromParsecFieldsprettySectionArgsgenericFromParsecFields PrettyField PrettySection doctestArgs