Skip to content

Commit b1286d6

Browse files
Include cabal-version field into cabal files generated with hpack (input-output-hk#85)
hpack includes this field itself when it's called from the command line. Without this field cabal may fail to parse generated cabal files
1 parent b24da60 commit b1286d6

File tree

3 files changed

+31
-9
lines changed

3 files changed

+31
-9
lines changed

cabal2nix/Main.hs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,10 +92,17 @@ findCabalFiles path = doesFileExist (path </> Hpack.packageConfig) >>= \case
9292
Right r ->
9393
return $ [InMemory (Just Hpack)
9494
(Hpack.decodeResultCabalFile r)
95-
(encodeUtf8 $ Hpack.renderPackage [] (Hpack.decodeResultPackage r))]
95+
(encodeUtf8 $ render r)]
9696

97-
where encodeUtf8 :: String -> ByteString
98-
encodeUtf8 = T.encodeUtf8 . T.pack
97+
where
98+
render :: Hpack.DecodeResult -> String
99+
render r =
100+
let body = Hpack.renderPackage [] (Hpack.decodeResultPackage r)
101+
cabalVersion = Hpack.decodeResultCabalVersion r
102+
in cabalVersion ++ body
103+
104+
encodeUtf8 :: String -> ByteString
105+
encodeUtf8 = T.encodeUtf8 . T.pack
99106

100107

101108
expr :: FilePath -> String -> String -> IO (Binding NExpr)

lib/Stack2nix/Project.hs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,18 @@ findCabalFiles UsePackageYamlFirst path = doesFileExist (path </> Hpack.packageC
3030
Right r ->
3131
return $ [InMemory (Just Hpack)
3232
(Hpack.decodeResultCabalFile r)
33-
(encodeUtf8 $ Hpack.renderPackage [] (Hpack.decodeResultPackage r))]
33+
(encodeUtf8 $ render r)]
34+
35+
where
36+
render :: Hpack.DecodeResult -> String
37+
render r =
38+
let body = Hpack.renderPackage [] (Hpack.decodeResultPackage r)
39+
cabalVersion = Hpack.decodeResultCabalVersion r
40+
in cabalVersion ++ body
41+
42+
encodeUtf8 :: String -> ByteString
43+
encodeUtf8 = T.encodeUtf8 . T.pack
3444

35-
where encodeUtf8 :: String -> ByteString
36-
encodeUtf8 = T.encodeUtf8 . T.pack
3745

3846
findOnlyCabalFiles :: FilePath -> IO [CabalFile]
3947
findOnlyCabalFiles path = fmap (OnDisk . (path </>)) . filter (isSuffixOf ".cabal") <$> listDirectory path

plan2nix/Plan2Nix/Project.hs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,14 @@ findCabalFiles path = doesFileExist (path </> Hpack.packageConfig) >>= \case
2828
Right r ->
2929
return $ [InMemory (Just Hpack)
3030
(Hpack.decodeResultCabalFile r)
31-
(encodeUtf8 $ Hpack.renderPackage [] (Hpack.decodeResultPackage r))]
31+
(encodeUtf8 $ render r)]
3232

33-
where encodeUtf8 :: String -> ByteString
34-
encodeUtf8 = T.encodeUtf8 . T.pack
33+
where
34+
render :: Hpack.DecodeResult -> String
35+
render r =
36+
let body = Hpack.renderPackage [] (Hpack.decodeResultPackage r)
37+
cabalVersion = Hpack.decodeResultCabalVersion r
38+
in cabalVersion ++ body
39+
40+
encodeUtf8 :: String -> ByteString
41+
encodeUtf8 = T.encodeUtf8 . T.pack

0 commit comments

Comments
 (0)