haskell-ci 0.10 → 0.10.1
raw patch · 9 files changed
+102/−30 lines, 9 filesdep ~ShellCheckdep ~aesondep ~tastyPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: ShellCheck, aeson, tasty
API changes (from Hackage documentation)
- HaskellCI.Cli: haskellCIVerStr :: String
+ HaskellCI.Cli: CommandVersionInfo :: Command
+ HaskellCI.VersionInfo: dependencies :: Map String String
+ HaskellCI.VersionInfo: haskellCIVerStr :: String
Files
- CHANGELOG.md +6/−0
- fixtures/cabal.project.copy-fields.all +5/−0
- fixtures/cabal.project.copy-fields.all.travis.yml +22/−12
- haskell-ci.cabal +5/−4
- src/HaskellCI.hs +9/−1
- src/HaskellCI/Cli.hs +7/−11
- src/HaskellCI/Config/HLint.hs +1/−1
- src/HaskellCI/Travis.hs +2/−1
- src/HaskellCI/VersionInfo.hs +45/−0
CHANGELOG.md view
@@ -1,3 +1,9 @@+## 0.10.1 - 2020-05-16++- Add version-info command to help debugging issues with `haskell-ci`+- Bump default HLint version to 3.1+- Support ShellCheck with GHC-8.8 and GHC-8.10+ ## 0.10 - 2020-04-14 - Allow turning off email notifications
fixtures/cabal.project.copy-fields.all view
@@ -13,3 +13,8 @@ servant-js:servant allow-newer: servant-js:servant-foreign++source-repository-package+ type: git+ location: https://github.com/haskell-servant/servant-auth+ tag: 4a134c3db79293d28f8b74a02863047e41fbaf56
fixtures/cabal.project.copy-fields.all.travis.yml view
@@ -163,12 +163,17 @@ - if [ $HCNUMVER -ge 80200 ] ; then echo 'package servant-server' >> cabal.project ; fi - "if [ $HCNUMVER -ge 80200 ] ; then echo ' ghc-options: -Werror=missing-methods' >> cabal.project ; fi" - |- echo "constraints: foundation >= 0.14" >> cabal.project- echo "allow-newer: servant-js:servant" >> cabal.project- echo "allow-newer: servant-js:servant-foreign" >> cabal.project- echo "" >> cabal.project- echo "package servant" >> cabal.project- echo " tests: False" >> cabal.project+ echo "constraints: foundation >= 0.14" >> cabal.project+ echo "allow-newer: servant-js:servant" >> cabal.project+ echo "allow-newer: servant-js:servant-foreign" >> cabal.project+ echo "" >> cabal.project+ echo "source-repository-package" >> cabal.project+ echo " type: git" >> cabal.project+ echo " location: https://github.com/haskell-servant/servant-auth" >> cabal.project+ echo " tag: 4a134c3db79293d28f8b74a02863047e41fbaf56" >> cabal.project+ echo "" >> cabal.project+ echo "package servant" >> cabal.project+ echo " tests: False" >> cabal.project - "for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 's/-[^-]*$//' | (grep -vE -- '^(servant|servant-client|servant-docs|servant-server)$' || true) | sed 's/^/constraints: /' | sed 's/$/ installed/' >> cabal.project.local; done" - cat cabal.project || true - cat cabal.project.local || true@@ -211,12 +216,17 @@ - if [ $HCNUMVER -ge 80200 ] ; then echo 'package servant-server' >> cabal.project ; fi - "if [ $HCNUMVER -ge 80200 ] ; then echo ' ghc-options: -Werror=missing-methods' >> cabal.project ; fi" - |- echo "constraints: foundation >= 0.14" >> cabal.project- echo "allow-newer: servant-js:servant" >> cabal.project- echo "allow-newer: servant-js:servant-foreign" >> cabal.project- echo "" >> cabal.project- echo "package servant" >> cabal.project- echo " tests: False" >> cabal.project+ echo "constraints: foundation >= 0.14" >> cabal.project+ echo "allow-newer: servant-js:servant" >> cabal.project+ echo "allow-newer: servant-js:servant-foreign" >> cabal.project+ echo "" >> cabal.project+ echo "source-repository-package" >> cabal.project+ echo " type: git" >> cabal.project+ echo " location: https://github.com/haskell-servant/servant-auth" >> cabal.project+ echo " tag: 4a134c3db79293d28f8b74a02863047e41fbaf56" >> cabal.project+ echo "" >> cabal.project+ echo "package servant" >> cabal.project+ echo " tests: False" >> cabal.project - "for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 's/-[^-]*$//' | (grep -vE -- '^(servant|servant-client|servant-docs|servant-server)$' || true) | sed 's/^/constraints: /' | sed 's/$/ installed/' >> cabal.project.local; done" - cat cabal.project || true - cat cabal.project.local || true
haskell-ci.cabal view
@@ -1,6 +1,6 @@ cabal-version: 2.2 name: haskell-ci-version: 0.10+version: 0.10.1 synopsis: Cabal package script generator for Travis-CI description: Script generator (@haskell-ci@) for [Travis-CI](https://travis-ci.org/) for continuous-integration testing of Haskell Cabal packages.@@ -114,6 +114,7 @@ HaskellCI.Tools HaskellCI.Travis HaskellCI.Travis.Yaml+ HaskellCI.VersionInfo HaskellCI.YamlSyntax default-extensions:@@ -137,7 +138,7 @@ build-depends: , base >=4.10 && <4.15 , bytestring ^>=0.10.8.1- , Cabal ^>= 3.2+ , Cabal ^>=3.2 , containers ^>=0.5.7.1 || ^>=0.6.0.1 , deepseq ^>=1.4.2.0 , directory ^>=1.3.0.0@@ -167,8 +168,8 @@ , unordered-containers ^>=0.2.10.0 -- ShellCheck. Would need newer transformers for older GHC- if (flag(shellcheck) && impl(ghc >=7.10 && <8.7))- build-depends: ShellCheck ==0.7.0+ if (flag(shellcheck) && impl(ghc >=7.10 && <8.11))+ build-depends: ShellCheck ==0.7.0 || ==0.7.1 executable haskell-ci main-is: Main.hs
src/HaskellCI.hs view
@@ -1,4 +1,3 @@-{-# LANGUAGE CPP #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE MultiWayIf #-} {-# LANGUAGE OverloadedStrings #-}@@ -36,6 +35,7 @@ import Distribution.Version import qualified Data.ByteString as BS+import qualified Data.Map as Map import qualified Data.List.NonEmpty as NE import qualified Data.Set as S import qualified Data.Traversable as T@@ -55,6 +55,7 @@ import HaskellCI.TestedWith import HaskellCI.Travis import HaskellCI.YamlSyntax+import HaskellCI.VersionInfo ------------------------------------------------------------------------------- -- Main@@ -99,6 +100,10 @@ (f, opts') <- parseTravis argv doTravis argv f (optionsWithOutputFile newFp <> opts' <> opts) CommandTravis f -> doTravis argv0 f opts+ CommandVersionInfo -> do+ putStrLn $ "haskell-ci " ++ haskellCIVerStr ++ " with dependencies"+ ifor_ dependencies $ \p v -> do+ putStrLn $ " " ++ p ++ "-" ++ v where findArgv :: [String] -> Maybe (Maybe Version, [String]) findArgv ls = do@@ -114,6 +119,9 @@ prettyMajVersion :: Version -> String prettyMajVersion v = case ghcMajVer v of (x, y) -> show x ++ "." ++ show y++ ifor_ :: Map.Map k v -> (k -> v -> IO a) -> IO ()+ ifor_ xs f = Map.foldlWithKey' (\m k a -> m >> void (f k a)) (return ()) xs defaultTravisPath :: FilePath defaultTravisPath = ".travis.yml"
src/HaskellCI/Cli.hs view
@@ -12,10 +12,7 @@ import HaskellCI.Config import HaskellCI.OptparseGrammar--#ifndef CURRENT_PACKAGE_VERSION-#define CURRENT_PACKAGE_VERSION "???"-#endif+import HaskellCI.VersionInfo ------------------------------------------------------------------------------- -- Command@@ -26,6 +23,7 @@ | CommandRegenerate | CommandListGHC | CommandDumpConfig+ | CommandVersionInfo deriving Show -------------------------------------------------------------------------------@@ -78,9 +76,6 @@ , O.help "Print version information" ] -haskellCIVerStr :: String-haskellCIVerStr = CURRENT_PACKAGE_VERSION- cliParserInfo :: O.ParserInfo (Command, Options) cliParserInfo = O.info ((,) <$> cmdP <*> optionsP O.<**> versionP O.<**> O.helper) $ mconcat [ O.fullDesc@@ -88,10 +83,11 @@ ] where cmdP = O.subparser (mconcat- [ O.command "regenerate" $ O.info (pure CommandRegenerate) $ O.progDesc "Regenerate .travis.yml"- , O.command "travis" $ O.info travisP $ O.progDesc "Generate travis-ci config"- , O.command "list-ghc" $ O.info (pure CommandListGHC) $ O.progDesc "List known GHC versions"- , O.command "dump-config" $ O.info (pure CommandDumpConfig) $ O.progDesc "Dump cabal.haskell-ci config with default values"+ [ O.command "regenerate" $ O.info (pure CommandRegenerate) $ O.progDesc "Regenerate .travis.yml"+ , O.command "travis" $ O.info travisP $ O.progDesc "Generate travis-ci config"+ , O.command "list-ghc" $ O.info (pure CommandListGHC) $ O.progDesc "List known GHC versions"+ , O.command "dump-config" $ O.info (pure CommandDumpConfig) $ O.progDesc "Dump cabal.haskell-ci config with default values"+ , O.command "version-info" $ O.info (pure CommandVersionInfo) $ O.progDesc "Print versions info haskell-ci was compiled with" ]) <|> travisP travisP = CommandTravis
src/HaskellCI/Config/HLint.hs view
@@ -27,7 +27,7 @@ deriving (Show, Generic) defaultHLintVersion :: VersionRange-defaultHLintVersion = withinVersion (mkVersion [2,2])+defaultHLintVersion = withinVersion (mkVersion [3,1]) ------------------------------------------------------------------------------- -- HLintJob
src/HaskellCI/Travis.hs view
@@ -54,6 +54,7 @@ import HaskellCI.ShVersionRange import HaskellCI.Tools import HaskellCI.Travis.Yaml+import HaskellCI.VersionInfo ------------------------------------------------------------------------------- -- Travis header@@ -603,7 +604,7 @@ for_ uris $ \uri -> item $ C.PrettyField () "packages" $ PP.text $ uriToString id uri "" - -- copy files from original cabal.project+ -- copy fields from original cabal.project case cfgCopyFields of CopyFieldsNone -> pure () CopyFieldsSome -> copyFieldsSome
+ src/HaskellCI/VersionInfo.hs view
@@ -0,0 +1,45 @@+{-# LANGUAGE CPP #-}+module HaskellCI.VersionInfo (+ haskellCIVerStr,+ dependencies,+) where++import HaskellCI.Prelude++import Data.Map (Map)++import qualified Data.Map as Map++haskellCIVerStr :: String+haskellCIVerStr = VERSION_haskell_ci++dependencies :: Map String String+dependencies = Map.fromList+ [ ("aeson", VERSION_aeson)+ , ("base", VERSION_base)+ , ("base-compat", VERSION_base_compat)+ , ("bytestring", VERSION_bytestring)+ , ("Cabal", VERSION_Cabal)+ , ("cabal-install-parsers", VERSION_cabal_install_parsers)+ , ("containers", VERSION_containers)+ , ("deepseq", VERSION_deepseq)+ , ("directory", VERSION_directory)+ , ("exceptions", VERSION_exceptions)+ , ("filepath", VERSION_filepath)+ , ("generic-lens-lite", VERSION_generic_lens_lite)+ , ("HsYAML", VERSION_HsYAML)+ , ("lattices", VERSION_lattices)+ , ("mtl", VERSION_mtl)+ , ("network-uri", VERSION_network_uri)+ , ("optparse-applicative", VERSION_optparse_applicative)+ , ("parsec", VERSION_parsec)+ , ("pretty", VERSION_pretty)+ , ("process", VERSION_process)+#ifdef VERSION_ShellCheck+ , ("ShellCheck", VERSION_ShellCheck)+#endif+ , ("temporary", VERSION_temporary)+ , ("text", VERSION_text)+ , ("transformers", VERSION_transformers)+ , ("unordered-containers", VERSION_unordered_containers)+ ]