Skip to content

Commit a883a40

Browse files
committed
Fix handling of bower.json
1 parent 5c4a338 commit a883a40

File tree

7 files changed

+19
-43
lines changed

7 files changed

+19
-43
lines changed

src/Spago/Bower.hs

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,15 @@ import Spago.Env
99

1010
import qualified Data.Aeson as Aeson
1111
import qualified Data.Aeson.Encode.Pretty as Pretty
12-
import qualified Data.ByteString.Lazy as ByteString
1312
import qualified Data.HashMap.Strict as HashMap
1413
import qualified Data.Text as Text
1514
import qualified Distribution.System as OS
1615
import qualified Turtle
1716
import qualified Web.Bower.PackageMeta as Bower
17+
import qualified Data.Text.Lazy as LazyText
18+
import qualified Data.Text.Lazy.Encoding as LazyEncoding
19+
import qualified Data.Text.Encoding as Encoding
1820

19-
import Data.Text.Lazy (fromStrict)
20-
import Data.Text.Lazy.Encoding (encodeUtf8)
2121
import Web.Bower.PackageMeta (PackageMeta (..))
2222

2323
import qualified Spago.Async as Async
@@ -26,7 +26,6 @@ import qualified Spago.Packages as Packages
2626
import qualified Spago.Templates as Templates
2727

2828

29-
3029
path :: IsString t => t
3130
path = "bower.json"
3231

@@ -37,7 +36,7 @@ runBower args = do
3736
Turtle.procStrictWithErr bower args empty
3837

3938

40-
generateBowerJson :: HasPublishEnv env => RIO env ByteString.ByteString
39+
generateBowerJson :: HasPublishEnv env => RIO env Text
4140
generateBowerJson = do
4241
logInfo "Generating a new Bower config using the package set versions.."
4342
Config{..} <- view configL
@@ -54,7 +53,7 @@ generateBowerJson = do
5453
{ Pretty.confCompare = Pretty.keyOrder ["name", "license", "repository", "ignore", "dependencies"] <> compare
5554
, Pretty.confTrailingNewline = True
5655
}
57-
bowerJson = Pretty.encodePretty' prettyConfig bowerPkg
56+
bowerJson = LazyText.toStrict $ LazyEncoding.decodeUtf8 $ Pretty.encodePretty' prettyConfig bowerPkg
5857

5958
ignored <- Git.isIgnored path
6059
when ignored $ do
@@ -75,7 +74,7 @@ runBowerInstall = do
7574

7675
templateBowerJson :: HasLogFunc env => RIO env Bower.PackageMeta
7776
templateBowerJson = do
78-
case Aeson.decodeStrict Templates.bowerJson of
77+
case Aeson.decodeStrict (Encoding.encodeUtf8 Templates.bowerJson) of
7978
Just t ->
8079
pure t
8180
Nothing ->
@@ -94,7 +93,7 @@ mkPackageName spagoName = do
9493

9594
-- | If the given version exists in bower, return a shorthand bower
9695
-- | version, otherwise return a URL#version style bower version.
97-
mkBowerVersion
96+
mkBowerVersion
9897
:: (HasLogFunc env, HasBower env)
9998
=> Bower.PackageName -> Text -> Repo
10099
-> RIO env Bower.VersionRange
@@ -105,7 +104,7 @@ mkBowerVersion packageName version (Repo repo) = do
105104
when (code /= ExitSuccess) $ do
106105
die [ display $ "Failed to run: `bower " <> Text.intercalate " " args <> "`", display err ]
107106

108-
info <- case Aeson.decode $ encodeUtf8 $ fromStrict out of
107+
info <- case Aeson.decode $ LazyEncoding.encodeUtf8 $ LazyText.fromStrict out of
109108
Just (Object obj) -> pure obj
110109
_ -> die [ display $ "Unable to decode output from `bower " <> Text.intercalate " " args <> "`: ", display out ]
111110

src/Spago/Templates.hs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
{-# LANGUAGE TemplateHaskell #-}
22
module Spago.Templates where
33

4-
import qualified Data.ByteString.Internal as B
5-
import Data.FileEmbed (embedFile)
64
import qualified Data.Text as T
75

86
import Spago.TH (embedFileUtf8, embedURLWithFallback)
@@ -24,8 +22,8 @@ testMain = $(embedFileUtf8 "templates/testMain.purs")
2422
gitignore :: T.Text
2523
gitignore = $(embedFileUtf8 "templates/gitignore")
2624

27-
bowerJson :: B.ByteString
28-
bowerJson = $(embedFile "templates/bower.json")
25+
bowerJson :: T.Text
26+
bowerJson = $(embedFileUtf8 "templates/bower.json")
2927

3028
pursRepl :: T.Text
3129
pursRepl = $(embedFileUtf8 "templates/purs-repl")

src/Spago/Version.hs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ module Spago.Version
1212
import Spago.Prelude
1313
import Spago.Env
1414

15-
import qualified Data.ByteString.Lazy as ByteString
1615
import qualified Data.Text as Text
1716
import Data.Versions (SemVer (..))
1817
import qualified Data.Versions as Version
@@ -109,7 +108,7 @@ bumpVersion dryRun spec = do
109108
let writeBowerAction = DryAction
110109
"write the new config to the `bower.json` file and try to install its dependencies" $ do
111110
logInfo $ "Writing the new Bower config to " <> surroundQuote Bower.path
112-
liftIO $ ByteString.writeFile Bower.path newBowerConfig
111+
writeTextFile Bower.path newBowerConfig
113112
Bower.runBowerInstall
114113
clean <- Git.hasCleanWorkingTree
115114
unless clean $ do

stack.yaml

Lines changed: 7 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -3,46 +3,28 @@ packages:
33
- .
44
extra-deps:
55
- async-pool-0.9.1@sha256:4015140f896c3f1652b06a679b0ade2717d05557970c283ea2c372a71be2a6a1,1605
6+
- base-compat-0.11.1@sha256:e49c1ce84f556621ef1142a169e4349049c516f5b3e3c3ec6830be503e7d4a93,7140
67
- binary-instances-1.0.0.1@sha256:e234be994da675479a3661f050d4a1d53565c9ed7786d9a68b7a29ba8b54b5a7,2659
7-
# - Cabal-3.2.0.0@sha256:d0d7a1f405f25d0000f5ddef684838bc264842304fd4e7f80ca92b997b710874,27320
8-
- dhall-1.35.0
8+
- dhall-1.36.0
99
- directory-1.3.6.1@sha256:3dc9c69c8e09ec95a7a45c6d06abe0f0d2f604439c37e5f88e5a6c335b088d71,2810
1010
- github-0.26@sha256:a9d4046325c3eb28cdc7bef2c3f5bb213328caeae0b7dce6f51de655f0bffaa1,7162
1111
- haskeline-0.8.1.0@sha256:6a6158c90b929ce7aa5331ff5e9819aa32c7df8f4a7ba324b3cc055ee96b48cb,5818
1212
- hspec-megaparsec-2.0.1@sha256:7f26ab334eaa653054766110cf259c31314d1c2ec170270e56101e344ce65ef9,2163
13+
- http-client-0.7.2.1
1314
- megaparsec-7.0.5@sha256:45e1f1348fab2783646fdb4d9e6097568981a740951c7356d36d794e2baba305,3902
1415
- prettyprinter-1.7.0
1516
- process-1.6.10.0@sha256:c0d2d8adaca7cea7ceaa60e67b61c775dc03727b83bdb1c97aa8cbeac9f5dd84,2469
1617
- repline-0.4.0.0@sha256:3324479e497d27c40c3d4762bffc52058f9921621d20d2947dcf9a554b94cd0d,2253
18+
- rio-0.1.18.0@sha256:067914d6ae9df1704902ecd1dd92b2c3d150216f7b924ce5aa57771a2ef3b99b,3688
1719
- semver-range-0.2.8@sha256:44918080c220cf67b6e7c8ad16f01f3cfe1ac69d4f72e528e84d566348bb23c3,1941
18-
# - time-1.9.3@sha256:8f1b5448722a12a952248b356c9eb366e351226543d9086a2da71270522d5f45,5679
20+
- th-env-0.1.0.2@sha256:d8f1f37f42a8f1a22404d7d0579528af18f5dac7232cca6bdbd5117c115a0ad5,1370
21+
- time-1.8.0.4@sha256:3f6eddf238b828eb4f82683acce1c3afe64784f0d20114239b738c123316c85c,5494
1922
- unix-2.7.2.2@sha256:9e93f93cc5a065248120136e83a0a6d1ce93d6eb5ef2a2543f9593e93e164d24,3496
2023
- Win32-2.8.5.0@sha256:50c11fce7ec29c750f199eec0bc97d42e9b8ca80abfbe068c0f474a3727b60ae,4277
21-
# Using a patched version as upstream doesn't support GHC 8.8.4 on Windows
24+
# Using a patched version as upstream doesn't support GHC 8.6.5 (and newer) on Windows
2225
# See https://github.com/serokell/haskell-with-utf8/issues/9
2326
- github: f-f/haskell-with-utf8
2427
commit: 8ae743ac6503a4c494ea3bd52f1fe7d72f9f125d
25-
- base-compat-0.11.1@sha256:e49c1ce84f556621ef1142a169e4349049c516f5b3e3c3ec6830be503e7d4a93,7140
26-
- rio-0.1.18.0@sha256:067914d6ae9df1704902ecd1dd92b2c3d150216f7b924ce5aa57771a2ef3b99b,3688
27-
- time-1.8.0.4@sha256:3f6eddf238b828eb4f82683acce1c3afe64784f0d20114239b738c123316c85c,5494
28-
# - with-utf8-1.0.2.1@sha256:95c02fffa643ddbeb092359802a512007c3e644cd509809f4716ad54592c437b,3057
29-
- th-env-0.1.0.2@sha256:d8f1f37f42a8f1a22404d7d0579528af18f5dac7232cca6bdbd5117c115a0ad5,1370
30-
- http-client-0.7.2.1
31-
32-
33-
- aeson-yaml-1.1.0.0
34-
- data-fix-0.3.0
35-
- generic-random-1.3.0.0@sha256:e5dc3bc7854cfefddc41b562ae78771aaf2e06ea20d7a5c1ecbdb01ba12dd7b7,1346
36-
- hashing-0.1.0.1@sha256:98861f16791946cdf28e3c7a6ee9ac8b72d546d6e33c569c7087ef18253294e7,2816
37-
- monadlist-0.0.2@sha256:978305e3f03dd5f65c673b551124dac0c39a247c2c14d84739ca9a3405fbb63a,904
38-
- neat-interpolation-0.5.1.2
39-
- parser-combinators-1.2.1@sha256:16c3490e007ec10b1255a2b36fb483d000156d555269107131241d9e0fa96412,1788
40-
- path-0.8.0
41-
- path-io-1.6.0
42-
- ref-tf-0.4.0.2@sha256:69de3550250e0cd69f45d080359cb314a9487c915024349c75b78732bbee9332,1134
43-
- semialign-1.1@sha256:5ff1788b6bcec97084ca60f736c126334e4ba4a450517e7ca4f69dd1156d38a0,2471
44-
- semialign-indexed-1.1@sha256:bc375898351fea11ab3f4279844fcfc00aa42c90182eedfc28c4754098da3e0e,2026
45-
- some-1.0.1@sha256:26e5bab7276f48b25ea8660d3fd1166c0f20fd497dac879a40f408e23211f93e,2055
4628
allow-newer: true
4729
nix:
4830
packages: [zlib]

templates/packages.dhall

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,6 @@ in upstream
104104
}
105105
-------------------------------
106106
-}
107-
108107
let upstream =
109108
https://github.com/purescript/package-sets/releases/download/psc-0.13.8-20201007/packages.dhall sha256:35633f6f591b94d216392c9e0500207bb1fec42dd355f4fecdfd186956567b6b
110109

test/BumpVersionSpec.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ spec = describe "spago bump-version" $ do
143143

144144
before_ (initGitTag "not-a-version") $ it "Spago should use v0.0.0 as initial version" $ do
145145

146-
spago ["bump-version", "--no-dry-run", "patch"] >>= shouldBeSuccess
146+
spago ["-v", "bump-version", "--no-dry-run", "patch"] >>= shouldBeSuccess
147147
getHighestTag `shouldReturn` Just "v0.0.1"
148148

149149

test/fixtures/packages-older-tag.dhall

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,6 @@ in upstream
104104
}
105105
-------------------------------
106106
-}
107-
108107
let upstream =
109108
https://github.com/purescript/package-sets/releases/download/psc-0.13.8-20200911-2/packages.dhall sha256:872c06349ed9c8210be43982dc6466c2ca7c5c441129826bcb9bf3672938f16e
110109

0 commit comments

Comments
 (0)