@@ -49,6 +49,7 @@ data PackageWarning
4949 = NoResolvedVersion PackageName
5050 | UndeclaredDependency PackageName
5151 | UnacceptableVersion (PackageName, String)
52+ | DirtyWorkingTree_Warn
5253 deriving (Show)
5354
5455-- | An error that should be fixed by the user.
@@ -279,21 +280,24 @@ data CollectedWarnings = CollectedWarnings
279280 { noResolvedVersions :: [PackageName]
280281 , undeclaredDependencies :: [PackageName]
281282 , unacceptableVersions :: [(PackageName, String)]
283+ , dirtyWorkingTree :: Any
282284 }
283285 deriving (Show, Eq, Ord)
284286
285287instance Monoid CollectedWarnings where
286− mempty = CollectedWarnings mempty mempty mempty
287− mappend (CollectedWarnings as bs cs) (CollectedWarnings as' bs' cs') =
288− CollectedWarnings (as <> as') (bs <> bs') (cs <> cs')
288+ mempty = CollectedWarnings mempty mempty mempty mempty
289+ mappend (CollectedWarnings as bs cs d)
290+ (CollectedWarnings as' bs' cs' d') =
291+ CollectedWarnings (as <> as') (bs <> bs') (cs <> cs') (d <> d')
289292
290293collectWarnings :: [PackageWarning] -> CollectedWarnings
291294collectWarnings = foldMap singular
292295 where
293296 singular w = case w of
294− NoResolvedVersion pn -> CollectedWarnings [pn] [] []
295− UndeclaredDependency pn -> CollectedWarnings [] [pn] []
296− UnacceptableVersion t -> CollectedWarnings [] [] [t]
297+ NoResolvedVersion pn -> CollectedWarnings [pn] mempty mempty mempty
298+ UndeclaredDependency pn -> CollectedWarnings mempty [pn] mempty mempty
299+ UnacceptableVersion t -> CollectedWarnings mempty mempty [t] mempty
300+ DirtyWorkingTree_Warn -> CollectedWarnings mempty mempty mempty (Any True)
297301
298302renderWarnings :: [PackageWarning] -> Box
299303renderWarnings warns =
@@ -302,6 +306,9 @@ renderWarnings warns =
302306 mboxes = [ go warnNoResolvedVersions noResolvedVersions
303307 , go warnUndeclaredDependencies undeclaredDependencies
304308 , go warnUnacceptableVersions unacceptableVersions
309+ , if getAny dirtyWorkingTree
310+ then Just warnDirtyWorkingTree
311+ else Nothing
305312 ]
306313 in case catMaybes mboxes of
307314 [] -> nullBox
@@ -377,5 +384,12 @@ warnUnacceptableVersions pkgs =
377384 where
378385 showTuple (pkgName, tag) = runPackageName pkgName ++ "#" ++ tag
379386
387+warnDirtyWorkingTree :: Box
388+warnDirtyWorkingTree =
389+ para (concat
390+ [ "Your working tree is dirty. (Note: this would be an error if it "
391+ , "were not a dry run)"
392+ ])
393+
380394printWarnings :: [PackageWarning] -> IO ()
381395printWarnings = printToStderr . renderWarnings