Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .github/workflows/haskell-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,10 @@ jobs:
if [ $((HCNUMVER >= 90400)) -ne 0 ] ; then echo " ghc-options: -Werror=unused-packages" >> cabal.project ; fi
if [ $((HCNUMVER >= 90400)) -ne 0 ] ; then echo "package cabal-install-parsers" >> cabal.project ; fi
if [ $((HCNUMVER >= 90400)) -ne 0 ] ; then echo " ghc-options: -Werror=unused-packages" >> cabal.project ; fi
if [ $((HCNUMVER >= 90000)) -ne 0 ] ; then echo "package haskell-ci" >> cabal.project ; fi
if [ $((HCNUMVER >= 90000)) -ne 0 ] ; then echo " ghc-options: -Werror=incomplete-patterns -Werror=incomplete-uni-patterns" >> cabal.project ; fi
if [ $((HCNUMVER >= 90000)) -ne 0 ] ; then echo "package cabal-install-parsers" >> cabal.project ; fi
if [ $((HCNUMVER >= 90000)) -ne 0 ] ; then echo " ghc-options: -Werror=incomplete-patterns -Werror=incomplete-uni-patterns" >> cabal.project ; fi
cat >> cabal.project <<EOF
allow-newer: ShellCheck:filepath

Expand Down
1 change: 1 addition & 0 deletions cabal-install-parsers/test/Golden.hs
Original file line number Diff line number Diff line change
Expand Up @@ -65,3 +65,4 @@ instance ToExpr Doc where
instance ToExpr (PrettyField ann) where
toExpr (PrettyField _ fn d) = App "PrettyField" [toExpr fn, toExpr d]
toExpr (PrettySection _ fn ds ps) = App "PrettySection" [toExpr fn, toExpr ds, toExpr ps]
toExpr PrettyEmpty = App "PrettyEmpty" []
2 changes: 2 additions & 0 deletions fixtures/all-versions.github
Original file line number Diff line number Diff line change
Expand Up @@ -445,6 +445,8 @@ jobs:
if [ $((GHCJSARITH || ! GHCJSARITH && HCNUMVER >= 80200)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods -Werror=missing-fields" >> cabal.project ; fi
if [ $((! GHCJSARITH && HCNUMVER >= 90400)) -ne 0 ] ; then echo "package splitmix" >> cabal.project ; fi
if [ $((! GHCJSARITH && HCNUMVER >= 90400)) -ne 0 ] ; then echo " ghc-options: -Werror=unused-packages" >> cabal.project ; fi
if [ $((! GHCJSARITH && HCNUMVER >= 90000)) -ne 0 ] ; then echo "package splitmix" >> cabal.project ; fi
if [ $((! GHCJSARITH && HCNUMVER >= 90000)) -ne 0 ] ; then echo " ghc-options: -Werror=incomplete-patterns -Werror=incomplete-uni-patterns" >> cabal.project ; fi
cat >> cabal.project <<EOF
EOF
$HCPKG list --simple-output --names-only | perl -ne 'for (split /\s+/) { print "constraints: any.$_ installed\n" unless /^(splitmix)$/; }' >> cabal.project.local
Expand Down
2 changes: 2 additions & 0 deletions fixtures/doctest-version.github
Original file line number Diff line number Diff line change
Expand Up @@ -460,6 +460,8 @@ jobs:
if [ $((GHCJSARITH || ! GHCJSARITH && HCNUMVER >= 80200)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods -Werror=missing-fields" >> cabal.project ; fi
if [ $((! GHCJSARITH && HCNUMVER >= 90400)) -ne 0 ] ; then echo "package splitmix" >> cabal.project ; fi
if [ $((! GHCJSARITH && HCNUMVER >= 90400)) -ne 0 ] ; then echo " ghc-options: -Werror=unused-packages" >> cabal.project ; fi
if [ $((! GHCJSARITH && HCNUMVER >= 90000)) -ne 0 ] ; then echo "package splitmix" >> cabal.project ; fi
if [ $((! GHCJSARITH && HCNUMVER >= 90000)) -ne 0 ] ; then echo " ghc-options: -Werror=incomplete-patterns -Werror=incomplete-uni-patterns" >> cabal.project ; fi
cat >> cabal.project <<EOF
EOF
$HCPKG list --simple-output --names-only | perl -ne 'for (split /\s+/) { print "constraints: any.$_ installed\n" unless /^(splitmix)$/; }' >> cabal.project.local
Expand Down
2 changes: 2 additions & 0 deletions fixtures/doctest.github
Original file line number Diff line number Diff line change
Expand Up @@ -460,6 +460,8 @@ jobs:
if [ $((GHCJSARITH || ! GHCJSARITH && HCNUMVER >= 80200)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods -Werror=missing-fields" >> cabal.project ; fi
if [ $((! GHCJSARITH && HCNUMVER >= 90400)) -ne 0 ] ; then echo "package splitmix" >> cabal.project ; fi
if [ $((! GHCJSARITH && HCNUMVER >= 90400)) -ne 0 ] ; then echo " ghc-options: -Werror=unused-packages" >> cabal.project ; fi
if [ $((! GHCJSARITH && HCNUMVER >= 90000)) -ne 0 ] ; then echo "package splitmix" >> cabal.project ; fi
if [ $((! GHCJSARITH && HCNUMVER >= 90000)) -ne 0 ] ; then echo " ghc-options: -Werror=incomplete-patterns -Werror=incomplete-uni-patterns" >> cabal.project ; fi
cat >> cabal.project <<EOF
EOF
$HCPKG list --simple-output --names-only | perl -ne 'for (split /\s+/) { print "constraints: any.$_ installed\n" unless /^(splitmix)$/; }' >> cabal.project.local
Expand Down
8 changes: 8 additions & 0 deletions fixtures/empty-line.github
Original file line number Diff line number Diff line change
Expand Up @@ -302,6 +302,14 @@ jobs:
if [ $((HCNUMVER > 81007)) -ne 0 ] ; then echo " ghc-options: -Werror=unused-packages" >> cabal.project ; fi
if [ $((HCNUMVER > 81007)) -ne 0 ] ; then echo "package servant-server" >> cabal.project ; fi
if [ $((HCNUMVER > 81007)) -ne 0 ] ; then echo " ghc-options: -Werror=unused-packages" >> cabal.project ; fi
if [ $((HCNUMVER > 81007)) -ne 0 ] ; then echo "package servant" >> cabal.project ; fi
if [ $((HCNUMVER > 81007)) -ne 0 ] ; then echo " ghc-options: -Werror=incomplete-patterns -Werror=incomplete-uni-patterns" >> cabal.project ; fi
if [ $((HCNUMVER > 81007)) -ne 0 ] ; then echo "package servant-client" >> cabal.project ; fi
if [ $((HCNUMVER > 81007)) -ne 0 ] ; then echo " ghc-options: -Werror=incomplete-patterns -Werror=incomplete-uni-patterns" >> cabal.project ; fi
if [ $((HCNUMVER > 81007)) -ne 0 ] ; then echo "package servant-docs" >> cabal.project ; fi
if [ $((HCNUMVER > 81007)) -ne 0 ] ; then echo " ghc-options: -Werror=incomplete-patterns -Werror=incomplete-uni-patterns" >> cabal.project ; fi
if [ $((HCNUMVER > 81007)) -ne 0 ] ; then echo "package servant-server" >> cabal.project ; fi
if [ $((HCNUMVER > 81007)) -ne 0 ] ; then echo " ghc-options: -Werror=incomplete-patterns -Werror=incomplete-uni-patterns" >> cabal.project ; fi
cat >> cabal.project <<EOF
constraints: foundatiion >= 0.14
allow-newer: servant-js:servant
Expand Down
2 changes: 2 additions & 0 deletions fixtures/enabled-jobs.github
Original file line number Diff line number Diff line change
Expand Up @@ -445,6 +445,8 @@ jobs:
if [ $((GHCJSARITH || ! GHCJSARITH && HCNUMVER >= 80200)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods -Werror=missing-fields" >> cabal.project ; fi
if [ $((! GHCJSARITH && HCNUMVER >= 90400)) -ne 0 ] ; then echo "package splitmix" >> cabal.project ; fi
if [ $((! GHCJSARITH && HCNUMVER >= 90400)) -ne 0 ] ; then echo " ghc-options: -Werror=unused-packages" >> cabal.project ; fi
if [ $((! GHCJSARITH && HCNUMVER >= 90000)) -ne 0 ] ; then echo "package splitmix" >> cabal.project ; fi
if [ $((! GHCJSARITH && HCNUMVER >= 90000)) -ne 0 ] ; then echo " ghc-options: -Werror=incomplete-patterns -Werror=incomplete-uni-patterns" >> cabal.project ; fi
cat >> cabal.project <<EOF
EOF
$HCPKG list --simple-output --names-only | perl -ne 'for (split /\s+/) { print "constraints: any.$_ installed\n" unless /^(splitmix)$/; }' >> cabal.project.local
Expand Down
8 changes: 8 additions & 0 deletions fixtures/messy.github
Original file line number Diff line number Diff line change
Expand Up @@ -303,6 +303,14 @@ jobs:
if [ $((HCNUMVER > 81007)) -ne 0 ] ; then echo " ghc-options: -Werror=unused-packages" >> cabal.project ; fi
if [ $((HCNUMVER > 81007)) -ne 0 ] ; then echo "package servant-server" >> cabal.project ; fi
if [ $((HCNUMVER > 81007)) -ne 0 ] ; then echo " ghc-options: -Werror=unused-packages" >> cabal.project ; fi
if [ $((HCNUMVER > 81007)) -ne 0 ] ; then echo "package servant" >> cabal.project ; fi
if [ $((HCNUMVER > 81007)) -ne 0 ] ; then echo " ghc-options: -Werror=incomplete-patterns -Werror=incomplete-uni-patterns" >> cabal.project ; fi
if [ $((HCNUMVER > 81007)) -ne 0 ] ; then echo "package servant-client" >> cabal.project ; fi
if [ $((HCNUMVER > 81007)) -ne 0 ] ; then echo " ghc-options: -Werror=incomplete-patterns -Werror=incomplete-uni-patterns" >> cabal.project ; fi
if [ $((HCNUMVER > 81007)) -ne 0 ] ; then echo "package servant-docs" >> cabal.project ; fi
if [ $((HCNUMVER > 81007)) -ne 0 ] ; then echo " ghc-options: -Werror=incomplete-patterns -Werror=incomplete-uni-patterns" >> cabal.project ; fi
if [ $((HCNUMVER > 81007)) -ne 0 ] ; then echo "package servant-server" >> cabal.project ; fi
if [ $((HCNUMVER > 81007)) -ne 0 ] ; then echo " ghc-options: -Werror=incomplete-patterns -Werror=incomplete-uni-patterns" >> cabal.project ; fi
cat >> cabal.project <<EOF
EOF
if $HEADHACKAGE; then
Expand Down
2 changes: 1 addition & 1 deletion haskell-ci.cabal
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
cabal-version: 2.2
name: haskell-ci
version: 0.19.20250708
version: 0.19.20250710
synopsis: Haskell CI script generator
description:
Script generator (@haskell-ci@) for
Expand Down
2 changes: 2 additions & 0 deletions src/HaskellCI/Config/Grammar.hs
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,8 @@ configGrammar = Config
^^^ metahelp "PKGSCOPE" "Insert -Werror=missing-methods for package scope (none, local, all)"
<*> rangeField "error-unused-packages" (field @"cfgErrorUnusedPkgs") defaultConfig
^^^ metahelp "RANGE" "Insert -Werror=unused-packages"
<*> rangeField "error-incomplete-patterns" (field @"cfgErrorIncompletePatterns") defaultConfig
^^^ metahelp "RANGE" "Insert -Werror=incomplete-(uni-)patterns"
<*> blurFieldGrammar (field @"cfgDoctest") doctestConfigGrammar defaultConfig
<*> blurFieldGrammar (field @"cfgDocspec") docspecConfigGrammar defaultConfig
<*> pure [] -- constraint sets
Expand Down
2 changes: 2 additions & 0 deletions src/HaskellCI/Config/History.hs
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,8 @@ configHistory =
& field @"cfgDocspec" . field @"cfgDocspecHash" .~ "cc20bb5c19501b42bde77556bc419c7c0a5c8d1eb65663024d8a4e4c868bef25"
, ver 0 19 20250708 := \cfg -> cfg
& field @"cfgErrorUnusedPkgs" .~ C.orLaterVersion (C.mkVersion [9,4])
, ver 0 19 20250108 := \cfg -> cfg
& field @"cfgErrorIncompletePatterns" .~ C.orLaterVersion (C.mkVersion [9,0])
]
where
ver x y z = [x, y, z]
Expand Down
1 change: 1 addition & 0 deletions src/HaskellCI/Config/Initial.hs
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ initialConfig = Config
, cfgInsertVersion = True
, cfgErrorMissingMethods = PackageScopeLocal
, cfgErrorUnusedPkgs = noVersion
, cfgErrorIncompletePatterns = noVersion
, cfgDoctest = initialDoctestConfig
, cfgDocspec = initialDocspecConfig
, cfgConstraintSets = []
Expand Down
1 change: 1 addition & 0 deletions src/HaskellCI/Config/Type.hs
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ data Config = Config
, cfgInsertVersion :: !Bool
, cfgErrorMissingMethods :: !PackageScope
, cfgErrorUnusedPkgs :: !VersionRange
, cfgErrorIncompletePatterns :: !VersionRange
, cfgDoctest :: !DoctestConfig
, cfgDocspec :: !DocspecConfig
, cfgConstraintSets :: [ConstraintSet]
Expand Down
7 changes: 7 additions & 0 deletions src/HaskellCI/GitHub.hs
Original file line number Diff line number Diff line change
Expand Up @@ -363,6 +363,13 @@ makeGitHub _argv config@Config {..} gitconfig prj jobs@JobVersions {..} = do
echo_if_to range "cabal.project" $ "package " ++ pkgName
echo_if_to range "cabal.project" $ " ghc-options: -Werror=unused-packages"

-- -Werror-unused-pkgs
for_ pkgs $ \Pkg{pkgName,pkgJobs} -> do
-- is introduced in 8.10.
let range = Range cfgErrorIncompletePatterns /\ RangePoints pkgJobs
echo_if_to range "cabal.project" $ "package " ++ pkgName
echo_if_to range "cabal.project" $ " ghc-options: -Werror=incomplete-patterns -Werror=incomplete-uni-patterns"

-- extra cabal.project fields
cat "cabal.project" $ C.showFields' (const C.NoComment) (const id) 2 $ extraCabalProjectFields "$GITHUB_WORKSPACE/source/"

Expand Down
Loading