From d32ec7038a509f755518819adfa912bc6e8372fe Mon Sep 17 00:00:00 2001
From: Emily Pillmore <emilypi@cohomolo.gy>
Date: Wed, 5 May 2021 11:09:20 -0400
Subject: [PATCH] output warning for doc files specified with cabal spec < 1.18

---
 .../Client/Init/Interactive/Command.hs        |  2 +-
 .../Client/Init/NonInteractive/Command.hs     |  2 +-
 .../src/Distribution/Client/Init/Simple.hs    |  4 ++--
 .../src/Distribution/Client/Init/Utils.hs     | 22 ++++++++++++-------
 4 files changed, 18 insertions(+), 12 deletions(-)

diff --git a/cabal-install/src/Distribution/Client/Init/Interactive/Command.hs b/cabal-install/src/Distribution/Client/Init/Interactive/Command.hs
index f5c1aa0e54..4de2322623 100644
--- a/cabal-install/src/Distribution/Client/Init/Interactive/Command.hs
+++ b/cabal-install/src/Distribution/Client/Init/Interactive/Command.hs
@@ -94,7 +94,7 @@ createProject v pkgIx srcDb initFlags = do
   isMinimal <- getMinimal initFlags
   doOverwrite <- getOverwrite initFlags
   pkgDir <- getPackageDir initFlags
-  pkgDesc <- fixupDocFiles <$> genPkgDescription initFlags srcDb
+  pkgDesc <- fixupDocFiles v =<< genPkgDescription initFlags srcDb
 
   let pkgName = _pkgName pkgDesc
       mkOpts cs = WriteOpts
diff --git a/cabal-install/src/Distribution/Client/Init/NonInteractive/Command.hs b/cabal-install/src/Distribution/Client/Init/NonInteractive/Command.hs
index f83f3aa3cf..16b7e70c08 100644
--- a/cabal-install/src/Distribution/Client/Init/NonInteractive/Command.hs
+++ b/cabal-install/src/Distribution/Client/Init/NonInteractive/Command.hs
@@ -102,7 +102,7 @@ createProject comp v pkgIx srcDb initFlags = do
   isMinimal <- getMinimal initFlags
   doOverwrite <- getOverwrite initFlags
   pkgDir <- packageDirHeuristics initFlags
-  pkgDesc <- fixupDocFiles <$> genPkgDescription initFlags srcDb
+  pkgDesc <- fixupDocFiles v =<< genPkgDescription initFlags srcDb
   comments <- noCommentsHeuristics initFlags
 
   let pkgName = _pkgName pkgDesc
diff --git a/cabal-install/src/Distribution/Client/Init/Simple.hs b/cabal-install/src/Distribution/Client/Init/Simple.hs
index 8a28c8db7e..fca3b752a1 100644
--- a/cabal-install/src/Distribution/Client/Init/Simple.hs
+++ b/cabal-install/src/Distribution/Client/Init/Simple.hs
@@ -14,7 +14,7 @@ import Distribution.Verbosity
 import Distribution.Simple.PackageIndex
 import Distribution.Client.Types.SourcePackageDb (SourcePackageDb(..))
 import qualified Data.List.NonEmpty as NEL
-import Distribution.Client.Init.Utils (currentDirPkgName, mkPackageNameDep)
+import Distribution.Client.Init.Utils (currentDirPkgName, mkPackageNameDep, fixupDocFiles)
 import Distribution.Client.Init.Defaults
 import Distribution.Simple.Flag (fromFlagOrDefault, flagElim)
 import Distribution.Client.Init.FlagExtractors
@@ -33,7 +33,7 @@ createProject v _pkgIx _srcDb initFlags = do
     isMinimal <- getMinimal initFlags
     doOverwrite <- getOverwrite initFlags
     pkgDir <- getPackageDir initFlags
-    pkgDesc <- genSimplePkgDesc initFlags
+    pkgDesc <- fixupDocFiles v =<< genSimplePkgDesc initFlags
 
     let pkgName = _pkgName pkgDesc
         mkOpts cs = WriteOpts
diff --git a/cabal-install/src/Distribution/Client/Init/Utils.hs b/cabal-install/src/Distribution/Client/Init/Utils.hs
index c48b2a89b3..924fa1b92f 100644
--- a/cabal-install/src/Distribution/Client/Init/Utils.hs
+++ b/cabal-install/src/Distribution/Client/Init/Utils.hs
@@ -269,11 +269,17 @@ mkPackageNameDep pkg = mkDependency pkg anyVersion (NES.singleton LMainLibName)
 -- so whatever the user wants as doc files should be dumped into
 -- extra-src-files.
 --
-fixupDocFiles :: PkgDescription -> PkgDescription
-fixupDocFiles pkgDesc
-  | _pkgCabalVersion pkgDesc < CabalSpecV1_18 = pkgDesc
-    { _pkgExtraSrcFiles =_pkgExtraSrcFiles pkgDesc
-      <> fromMaybe mempty (_pkgExtraDocFiles pkgDesc)
-    , _pkgExtraDocFiles = Nothing
-    }
-  | otherwise = pkgDesc
+fixupDocFiles :: Interactive m => Verbosity -> PkgDescription -> m PkgDescription
+fixupDocFiles v pkgDesc
+  | _pkgCabalVersion pkgDesc < CabalSpecV1_18 = do
+    message v $ concat
+      [ "Cabal spec versions < 1.18 do not support extra-doc-files. "
+      , "Doc files will be treated as extra-src-files."
+      ]
+
+    return $ pkgDesc
+      { _pkgExtraSrcFiles =_pkgExtraSrcFiles pkgDesc
+        <> fromMaybe mempty (_pkgExtraDocFiles pkgDesc)
+      , _pkgExtraDocFiles = Nothing
+      }
+  | otherwise = return pkgDesc
-- 
GitLab