diff --git a/ChangeLog.md b/ChangeLog.md index 0325e0080f..9b2b227deb 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -13,6 +13,9 @@ Behavior changes: Other enhancements: +* `stack ls dependencies json` now includes fields `sha256` and `size` for + dependencies of `type` `archive` in `location`. + [#5280](https://github.com/commercialhaskell/stack/issues/5280) * Build failures now show a hint to scroll up to the corresponding section [#5279](https://github.com/commercialhaskell/stack/issues/5279) diff --git a/src/Stack/Dot.hs b/src/Stack/Dot.hs index 62986d64ee..0c517f5d63 100644 --- a/src/Stack/Dot.hs +++ b/src/Stack/Dot.hs @@ -188,7 +188,9 @@ pkgLocToJSON (PLImmutable (PLIArchive archive _)) = let url = case archiveLocati ALUrl u -> u ALFilePath (ResolvedPath _ path) -> Text.pack $ "file://" ++ Path.toFilePath path in object [ "type" .= ("archive" :: Text) - , "url" .= url ] + , "url" .= url + , "sha256" .= archiveHash archive + , "size" .= archiveSize archive ] pkgLocToJSON (PLImmutable (PLIRepo repo _)) = object [ "type" .= case repoType repo of RepoGit -> "git" :: Text RepoHg -> "hg" :: Text diff --git a/test/integration/tests/4101-dependency-tree/Main.hs b/test/integration/tests/4101-dependency-tree/Main.hs index 7f1e021329..a264329025 100644 --- a/test/integration/tests/4101-dependency-tree/Main.hs +++ b/test/integration/tests/4101-dependency-tree/Main.hs @@ -152,6 +152,6 @@ main = stackCheckStdout ["ls", "dependencies", "json"] $ \stdOut -> do currdir <- getCurrentDirectory - let expected = "[{\"dependencies\":[\"base\",\"bytestring\",\"time\"],\"name\":\"unix\",\"version\":\"2.7.2.2\",\"license\":\"BSD-3\"},{\"dependencies\":[\"base\"],\"name\":\"transformers\",\"version\":\"0.5.6.2\",\"license\":\"BSD-3\"},{\"dependencies\":[\"base\",\"deepseq\"],\"name\":\"time\",\"version\":\"1.8.0.2\",\"license\":\"BSD-3\"},{\"location\":{\"url\":\"file://" ++ currdir ++ "/subproject/\",\"type\":\"project package\"},\"dependencies\":[\"base\"],\"name\":\"subproject\",\"version\":\"0.1.0.0\",\"license\":\"AllRightsReserved\"},{\"dependencies\":[],\"name\":\"rts\",\"version\":\"1.0\",\"license\":\"BSD-3\"},{\"location\":{\"url\":\"https://hackage.haskell.org/package/mtl-2.2.2\",\"type\":\"hackage\"},\"dependencies\":[\"base\",\"transformers\"],\"name\":\"mtl\",\"version\":\"2.2.2\",\"license\":\"BSD3\"},{\"dependencies\":[\"ghc-prim\"],\"name\":\"integer-gmp\",\"version\":\"1.0.2.0\",\"license\":\"BSD-3\"},{\"dependencies\":[\"rts\"],\"name\":\"ghc-prim\",\"version\":\"0.5.3\",\"license\":\"BSD-3\"},{\"location\":{\"url\":\"file://" ++ currdir ++ "/\",\"type\":\"project package\"},\"dependencies\":[\"base\",\"filelock\",\"mtl\",\"subproject\"],\"name\":\"files\",\"version\":\"0.1.0.0\",\"license\":\"AllRightsReserved\"},{\"location\":{\"url\":\"https://github.com/snoyberg/filelock/archive/4f080496d8bf153fbe26e64d1f52cf73c7db25f6.tar.gz\",\"type\":\"archive\"},\"dependencies\":[\"base\",\"unix\"],\"name\":\"filelock\",\"version\":\"0.1.1.2\",\"license\":\"PublicDomain\"},{\"dependencies\":[\"array\",\"base\"],\"name\":\"deepseq\",\"version\":\"1.4.4.0\",\"license\":\"BSD-3\"},{\"dependencies\":[\"base\",\"deepseq\",\"ghc-prim\",\"integer-gmp\"],\"name\":\"bytestring\",\"version\":\"0.10.8.2\",\"license\":\"BSD-3\"},{\"dependencies\":[\"ghc-prim\",\"integer-gmp\",\"rts\"],\"name\":\"base\",\"version\":\"4.12.0.0\",\"license\":\"BSD-3\"},{\"dependencies\":[\"base\"],\"name\":\"array\",\"version\":\"0.5.3.0\",\"license\":\"BSD-3\"}]\n" + let expected = "[{\"dependencies\":[\"base\",\"bytestring\",\"time\"],\"name\":\"unix\",\"version\":\"2.7.2.2\",\"license\":\"BSD-3\"},{\"dependencies\":[\"base\"],\"name\":\"transformers\",\"version\":\"0.5.6.2\",\"license\":\"BSD-3\"},{\"dependencies\":[\"base\",\"deepseq\"],\"name\":\"time\",\"version\":\"1.8.0.2\",\"license\":\"BSD-3\"},{\"location\":{\"url\":\"file://" ++ currdir ++ "/subproject/\",\"type\":\"project package\"},\"dependencies\":[\"base\"],\"name\":\"subproject\",\"version\":\"0.1.0.0\",\"license\":\"AllRightsReserved\"},{\"dependencies\":[],\"name\":\"rts\",\"version\":\"1.0\",\"license\":\"BSD-3\"},{\"location\":{\"url\":\"https://hackage.haskell.org/package/mtl-2.2.2\",\"type\":\"hackage\"},\"dependencies\":[\"base\",\"transformers\"],\"name\":\"mtl\",\"version\":\"2.2.2\",\"license\":\"BSD3\"},{\"dependencies\":[\"ghc-prim\"],\"name\":\"integer-gmp\",\"version\":\"1.0.2.0\",\"license\":\"BSD-3\"},{\"dependencies\":[\"rts\"],\"name\":\"ghc-prim\",\"version\":\"0.5.3\",\"license\":\"BSD-3\"},{\"location\":{\"url\":\"file://" ++ currdir ++ "/\",\"type\":\"project package\"},\"dependencies\":[\"base\",\"filelock\",\"mtl\",\"subproject\"],\"name\":\"files\",\"version\":\"0.1.0.0\",\"license\":\"AllRightsReserved\"},{\"location\":{\"size\":9228,\"url\":\"https://github.com/snoyberg/filelock/archive/4f080496d8bf153fbe26e64d1f52cf73c7db25f6.tar.gz\",\"type\":\"archive\",\"sha256\":\"c27641e26137f52b27e3ef9e27e7ac3f845f719ea54a12475f00f2ea7e6d9afc\"},\"dependencies\":[\"base\",\"unix\"],\"name\":\"filelock\",\"version\":\"0.1.1.2\",\"license\":\"PublicDomain\"},{\"dependencies\":[\"array\",\"base\"],\"name\":\"deepseq\",\"version\":\"1.4.4.0\",\"license\":\"BSD-3\"},{\"dependencies\":[\"base\",\"deepseq\",\"ghc-prim\",\"integer-gmp\"],\"name\":\"bytestring\",\"version\":\"0.10.8.2\",\"license\":\"BSD-3\"},{\"dependencies\":[\"ghc-prim\",\"integer-gmp\",\"rts\"],\"name\":\"base\",\"version\":\"4.12.0.0\",\"license\":\"BSD-3\"},{\"dependencies\":[\"base\"],\"name\":\"array\",\"version\":\"0.5.3.0\",\"license\":\"BSD-3\"}]\n" when (stdOut /= expected) $ error $ unlines [ "Expected:", expected, "Actual:", stdOut ]