@@ -1,64 +0,0 @@
1−module Install.Plan where
3−import qualified Data.Map as Map
5−import qualified Elm.Package.Solution as S
6−import qualified Elm.Package as Package
11− { installs :: Map.Map Package.Name Package.Version
12− , upgrades :: Map.Map Package.Name (Package.Version, Package.Version)
13− , removals :: Map.Map Package.Name Package.Version
17−create :: S.Solution -> S.Solution -> Plan
20− { installs = Map.difference new old
21− , upgrades = discardNoOps (Map.intersectionWith (,) old new)
22− , removals = Map.difference old new
25− discardNoOps updates =
26− Map.mapMaybe isChanged updates
28− isChanged upgrade@(oldVersion,newVersion) =
29− if oldVersion == newVersion
34−isEmpty :: Plan -> Bool
35−isEmpty (Plan installs upgrades removals) =
43−display :: Plan -> String
44−display (Plan installs upgrades removals) =
46− ++ displayCategory "Install" displayInstall installs
47− ++ displayCategory "Upgrade" displayUpgrade upgrades
48− ++ displayCategory "Remove" displayRemove removals
50− displayCategory name render category =
51− if Map.null category then "" else
53− ++ concatMap (\entry -> "\n " ++ render entry) (Map.toList category)
56− displayInstall (name, version) =
57− Package.toString name ++ " " ++ Package.versionToString version
59− displayUpgrade (name, (old, new)) =
60− Package.toString name ++ " ("
61− ++ Package.versionToString old ++ " => " ++ Package.versionToString new ++ ")"
63− displayRemove (name, _version) =
64− Package.toString name