@@ -49,6 +49,7 @@ data PackageWarning
49 = NoResolvedVersion PackageName
49 = NoResolvedVersion PackageName
50 | UndeclaredDependency PackageName
50 | UndeclaredDependency PackageName
51 | UnacceptableVersion (PackageName, String)
51 | UnacceptableVersion (PackageName, String)
52+ | DirtyWorkingTree_Warn
52 deriving (Show)
53 deriving (Show)
54-- | An error that should be fixed by the user.
55-- | An error that should be fixed by the user.
@@ -279,21 +280,24 @@ data CollectedWarnings = CollectedWarnings
279 { noResolvedVersions :: [PackageName]
280 { noResolvedVersions :: [PackageName]
280 , undeclaredDependencies :: [PackageName]
281 , undeclaredDependencies :: [PackageName]
281 , unacceptableVersions :: [(PackageName, String)]
282 , unacceptableVersions :: [(PackageName, String)]
283+ , dirtyWorkingTree :: Any
283 deriving (Show, Eq, Ord)
285 deriving (Show, Eq, Ord)
285instance Monoid CollectedWarnings where
287instance Monoid CollectedWarnings where
286− mempty = CollectedWarnings mempty mempty mempty
288+ mempty = CollectedWarnings mempty mempty mempty mempty
287− mappend (CollectedWarnings as bs cs) (CollectedWarnings as' bs' cs') =
289+ mappend (CollectedWarnings as bs cs d)
290+ (CollectedWarnings as' bs' cs' d') =
288− CollectedWarnings (as <> as') (bs <> bs') (cs <> cs')
291+ CollectedWarnings (as <> as') (bs <> bs') (cs <> cs') (d <> d')
290collectWarnings :: [PackageWarning] -> CollectedWarnings
293collectWarnings :: [PackageWarning] -> CollectedWarnings
291collectWarnings = foldMap singular
294collectWarnings = foldMap singular
293 singular w = case w of
296 singular w = case w of
294− NoResolvedVersion pn -> CollectedWarnings [pn] [] []
297+ NoResolvedVersion pn -> CollectedWarnings [pn] mempty mempty mempty
295− UndeclaredDependency pn -> CollectedWarnings [] [pn] []
298+ UndeclaredDependency pn -> CollectedWarnings mempty [pn] mempty mempty
296− UnacceptableVersion t -> CollectedWarnings [] [] [t]
299+ UnacceptableVersion t -> CollectedWarnings mempty mempty [t] mempty
300+ DirtyWorkingTree_Warn -> CollectedWarnings mempty mempty mempty (Any True)
298renderWarnings :: [PackageWarning] -> Box
302renderWarnings :: [PackageWarning] -> Box
299renderWarnings warns =
303renderWarnings warns =
@@ -302,6 +306,9 @@ renderWarnings warns =
302 mboxes = [ go warnNoResolvedVersions noResolvedVersions
306 mboxes = [ go warnNoResolvedVersions noResolvedVersions
303 , go warnUndeclaredDependencies undeclaredDependencies
307 , go warnUndeclaredDependencies undeclaredDependencies
304 , go warnUnacceptableVersions unacceptableVersions
308 , go warnUnacceptableVersions unacceptableVersions
309+ , if getAny dirtyWorkingTree
310+ then Just warnDirtyWorkingTree
306 in case catMaybes mboxes of
313 in case catMaybes mboxes of
307 [] -> nullBox
314 [] -> nullBox
@@ -377,5 +384,12 @@ warnUnacceptableVersions pkgs =
378 showTuple (pkgName, tag) = runPackageName pkgName ++ "#" ++ tag
385 showTuple (pkgName, tag) = runPackageName pkgName ++ "#" ++ tag
387+warnDirtyWorkingTree :: Box
388+warnDirtyWorkingTree =
390+ [ "Your working tree is dirty. (Note: this would be an error if it "
391+ , "were not a dry run)"
380printWarnings :: [PackageWarning] -> IO ()
394printWarnings :: [PackageWarning] -> IO ()
381printWarnings = printToStderr . renderWarnings
395printWarnings = printToStderr . renderWarnings